红联Linux门户
Linux帮助

linux中各种括号之(),(()),[],[[]],{}

发布时间:2016-01-03 15:37:05来源:linux网站作者:_老坛酸菜_

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