一、大括号
{}
使用场景:
父shell域规整代码,或叫多命令集合:左大括号后必须有空格,右大括号前必须有分号{ code;}
。作用域还是在父shell。变量名的定界符。${变量名}
取变量值。大括号扩展。echo a{1,2,3}b
,即a1b a2b a3b
。{1..10}
一、小括号
()
使用场景:
开启子shell。见Linux中父shell 与 子shell$()
返回输出值子shell()
中的标准输出和错误。构造数组。a=(1 2 3)
,b=([0]=1 [3]=5)
(())
使用场景:
计算表达式,((表达式))
等价于let 表达式
,仍是在父shell中。表达式结果不是逻辑0或1的时候,该表达式不报错的退出状态永远是0。上述表达式可以是整数相关的条件表达式,使得 a.(,<
等不用加反斜杠;b.>,<,!=
可应用于整数,并且>=,<=,==
也可使用 c. 支持&&
和||
表达 代替-a
,-o
三、 中括号
[]
使用场景:
代替表达式取值时的双小括号$((表达式))
等价于$[]
,如a=$((10/3))
等价于a=$[10/3]
条件判断。[ 条件表达式 ]
,等价于test 条件表达式
。中括号前后要有空格。条件成立,则退出状态为0,否则为1。POSIX字符集表示,tr后使用。
[[]]
使用场景:
用于条件判断,使得:a.(,<
等不用加反斜杠;b. 保留字符串首尾有空格时,也不需要加双引号 c. 判判断字符串相等或者不等时,右侧支持通配模式。*
代表0或多个字符,?
代表一个字符 d. 支持&&
和||
表达 代替-a
,-o
P146POSIX字符集表示,grep,egrep,tr等命令中使用。
更多参考:
1. Linux中的括号用法
2. linux中()、[]、{}、(())、[[]]等各种括号的使用