括号总结

() 单小括号

  • 命令组,括号中的命令将会开一个新的子shell执行

    • 括号中变量不能被剩下脚本使用

    • 命令之间分号隔开

    • 命令和括号之间可以没有空格

  • 命令替换,等同于``反引号

    • $(xxx)会被替换成命令执行结果

  • 初始化数组

    • arr=(a b c d)

filenum=$(ls | wc -l)
echo ${filenum}
filenum=`ls | wc -l`
echo ${filenum}
arr=(a b c d)
echo ${arr[0]}  // a
echo ${arr[@]}  //4
 

(()) 双小括号

  • 整数计算,不支持浮点

    • ((tmp=a+b))

    • c=$((a+b))

  • 算术运算比较

((c=2+1))
echo $c     //3
d=$((1+2))
echo $d     //3
// a==1 true
if (($a==1)); then
    echo "a==1"
fi
//a==1 true
if ((a==1)); then
    echo "a==1"
fi
 

[] 单中括号

  • 判断命令: 一般参数为比较表达式

    • 会根据比较的结果返回一个退出状态码

    • 可用的比较运算符有:

      • 字符串: ==, !=

      • 整数: -eq, -gt, -lt, -ne, -ge, -le

      • 逻辑: -a(||), -o(&&)

// aa == aa
if [ "aa" == "aa" ]; then
    echo "aa == aa"
else
    echo "aa != aa"
fi
// 1 < 2
if [ 1 -lt 2 ]; then
    echo "1 < 2"
fi
//1 -lt 2 -o aa == bb
if [ 1 -lt 2 -o "aa" == "bb" ]; then
    echo "1 -lt 2 -o aa == bb"
fi
 

[[]] 双中括号

  • bash程序语言中的关键字,双括号中的支付不会发生参数扩展或者命令替换

  • 支持字符串模式匹配和正则匹配

  • 支持逻辑判断符: &&, ||, <, >

// hello 与 hell? 可以加括号,也可以不加
if [[ hello == hell? ]]; then
    echo "hello == hell?"
fi
if [[ 2 -gt 1 && "hello" == "hell?" ]]; then
    echo "2 > 1 && hello == hell?"
fi
 

{} 花括号

  • 使用通配符对花括号内容进行扩展

    • 不允许有空白(除非空白被引用或者转义)

  • 代码块:

    • 不会开一个新的shell, 变量可以被余下脚本使用

    • 每句命令都要有分号

    • 括号两边有空格

`touch {1..4}.txt`  // touch 1.txt 2.txt 3.txt 4.txt
`touch {ex1, ex2}.txt`  // touch ex1.txt ex2.txt

shell中括号总结: {}, (), (()), [], [[]]的更多相关文章

  1. Shell中括号的作用

    Shell中括号的作用 作者:Danbo 时间:2015-8-7 单小括号() ①.命令组.括号中的命令将会断开一个子Shell顺序执行,所以括号中的变量不能被脚本余下的部分使用.括号中多个命令之间用 ...

  2. shell中括号的使用

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...

  3. shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  4. (转)shell中括号的特殊用法 linux if多条件判断

    一.   bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,&g ...

  5. Shell编程中括号判断中赋值语句和判断语句

    #!/bin/bash declare var="xxx" # without space and use one = #1.judge whether the assignmen ...

  6. shell之小括号、中括号、大括号

    1.Shell中变量的原形:${var}  一串命令的执行 #等价于 $ var=test $ echo $var test #例如,用在这个位置 $ echo ${var}AA testAA 2.命 ...

  7. shell if条件判断中:双中括号与单中括号的区别

    电脑重装了系统,登录虚拟机的shell脚本需重写,在为编写的脚本命名时发现存在同名脚本,才想起来是连接公司服务器的登录脚本,不想写俩脚本,怕记混了,那就整合一下.代码如下: #!/bin/bash#z ...

  8. Shell 中test 单中括号[] 双中括号[[]] 的区别

    Shell test 单中括号[] 双中括号[[]] 的区别 在写Shell脚本的时候,经常在写条件判断语句时不知道该用[] 还是 [[]],首先我们来看他们的类别: $type [ [[ test ...

  9. shell编程中的单/双 小括号, 中括号, 大括号

    linux shell中的变量类型?分字符串或者数字或者bool类型吗? 参考: http://www.cnblogs.com/nufangrensheng/p/3477281.html 不分! sh ...

随机推荐

  1. 深入理解JVM - 线程安全与锁优化 - 第十三章

    线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对 ...

  2. BZOJ 1208 [HNOI2004]宠物收养所:Splay(伸展树)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 题意: 有一个宠物收养所,在接下来一段时间内会陆续有一些宠物进到店里,或是一些人来领 ...

  3. html5--1.19 通用属性

    html5--1.19 通用属性 学习要点: 1.通用属性的概念及几个常用的通用属性2.对属性值的若干点补充 通用属性 通用属性(全局属性)可以用于任何的HTML5元素:通用属性有十几种:这节课不会全 ...

  4. 1076 Forwards on Weibo (30)(30 分)

    Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...

  5. ACM学习历程——UVA10112 Myacm Triangles(计算几何,多边形与点的包含关系)

    Description   Problem B: Myacm Triangles Problem B: Myacm Triangles Source file: triangle.{c, cpp, j ...

  6. 系列文章--突袭HTML5

    学习新的网站构建技术:基于HTML5,但不限于HTML5.   突袭HTML5之Javascript API扩展5 - 其他扩展   突袭HTML5之Javascript API扩展4 - 拖拽   ...

  7. poj3013Big Chrismas Tree——树转换spfa

    题目:http://poj.org/problem?id=3013 看似生成树,实则最短路,可以将题意转化为点权*根到此点的边权和(最短路使其最小). 代码如下: #include<iostre ...

  8. Ubuntu下Apache重启错误:Could not reliably determine解决

    错误信息:apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 ...

  9. win7-64 mysql的安装

    1.https://jingyan.baidu.com/article/597035521d5de28fc00740e6.html 2.net start mysql 无法启动的3534的错误的解决办 ...

  10. css3 翻起页脚

    html <div class="demo2"> <img src="images/1.jpg"> </div> css . ...