Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用

https://www.cnblogs.com/nkwy2012/p/9171414.html

 

技巧小结:

字符串比较用双中括号[[ ]];算数比较用单中括号[ ]——左右留空格

算数运算用双小括号(( )) ;shell命令及输出用小括号( )——左右不留空格

快速替换用花括号{ }——左右留空格

反单引号起着命令替换的作用` `

 

----------------------------------------------------------------------------------------------------------------

单括号():

另开命令组——小括号中的内容会开启一个子shell独立运行;括号中以分号连接,最后一个命令不需要;各命令和括号无空格

得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a

初始化数组——array=(a b c d)

双括号(()):

省去$符号的算术运算—— for((i=0;i<5;i++)); if (($i<5)); a=5; ((a++)) 可将 $a 重定义为6;括号内支持多个表达式用逗号分开。 

C语言规则运算——$((exp)),exp为符合C语言规则的运算符,表达式

跨进制运算——二进制、八进制、十六进制运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制)

单中括号[ ]:

字符串比较——==和!=

整数比较——不等于:-gt:大于;-lt :小于;-eq:等于;-ne

数组索引——array[0]

双中括号[[]]:

字符串比较——可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

逻辑运算符——防止脚本许多逻辑错误,比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。

退出码——bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。

posted @ 2020-01-08 16:27  kissrule  阅读(808)  评论(0编辑  收藏  举报