1.单小括号()
(1)命令组,括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。形如(cmd1;cmd2;cmd3),这三条命令的执行不会影响当前的shell环境。
(2)命令替换,$(command)
(3)定义数据,array = ("beijing" "tianjin" "chongqin" "shanghai")
2.双小括号
(0)((expr))中的expr可以支持C语言中的各种表达式,甚至连a>b?a:b这样的三目表达式都支持
(1)(())中使用变量,均不需要$符号,例如,((a=b+c))
(2)(())中可以有多个表达式,各个表达式用逗号,分割,例如((a++,b++,c++))
(3)((expr))中expr表达式不仅可以是关系表达式,也可以是算术表述式,比如((a>b)) 或者((a+b))
(4)((expr))可以用在for、while、if中的条件判断中,例如if((a>b)) while((a==b))
(5)可以使用$((expr))获取expr的表达式计算结果值
3.单中括号[]
(1)[]中[是base的内置命令,和test命令是一样的。]表示条件表达式的结束。也就是说,
if [ $num1 -eq $num2 ] ; then 等价于 if /usr/bin/[ $num1 -eq $num2 ] ; then 还等价于if test $num1 -eq $num2 ; then
(2)[]的具体用法有
[ expr ]
[ expr1 -o expr2 ] eg, [ "$variable" == "Y" -o "$variable" == "y"]
[ expr1 -a expr2 ]
[ expr1 ] || [ expr2 ]
[ expr1 ] && [ expr2 ]
4.双中括号[[]]
[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。
对于复合表达式这块,[[]]支持如下两种[]不支持的形式,
[ expr1 || expr2 ] eg, [ "$variable1" == "Y" || "$variable2" == "y"]
[ expr1 && expr2 ]
5.大括号{}
(1)代码块的功能,又被称为内部组,这个结构事实上创建了一个匿名函数 。与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。{}的第一个命令和左括号之间必须要有一个空格。
(2)变量内容的删除、替代和替换。类似于这样的形式,${变量#关键字},${变量%关键字},${变量/旧字符串/新字符串},${str-expr},${str+expr},${str:=expr}等等。
Linux man命令后面的圆括号的意义:http://www.linuxdiyf.com/linux/8507.html
命令行小技巧 使用大括号扩展参数的方法:http://www.linuxdiyf.com/linux/452.html