shell 中的括号——() [] {} 使用

$()shell

用做命令替换,同``,如var=`ls` 和var=$(ls)的结果同样spa

可使用echo $var | xargs –n 1查看命令行

${}字符串

用做变量替换,与$相似,可是能够作形如var=${A}B这种工做,即在变量A后面增长一个B,能够认为是增强版的$Atest

$(())变量

用于计算,一样可用于计算的还有let, expr扩展

语法

res=$((5+2))im

let res=5+2重定向

res=`expr 5 + 2`


[[]]与[]

一、  前者“[[”是关键字,后者是内建命令,至关于test ;

二、  逻辑判断用法不一致

[ : -a –o

[[ : && ||

三、  对于[]来讲,要用-eq 等进行数字比较,而不能传入字符串和数字进行比较,而在[[]]中会把字符串直接转为0;当比较的变量为空时,使用[]就会报错,而[[]]不存在这种问题


四、  [[]]能够用于算术运算,而[]不行

如:

[[ 99+1 –eq 100 ]]  true

[ 99+1 –eq 100 ]  报错, 但可使用[ $((99+1)) –eq100 ]

五、 命令行参数的区别

1)        [ ... ]为shell命令,因此在其中的表达式应是它的命令行参数,因此串比较操做符">" 与"<"必须转义,不然就变成IO重定向了;

如: [ 0 \< 1] 与[[ 0 < 1]]

2)        因为"[["是关键字,不会作命令行扩展,因此在[[中"<"与">"不需转义,可是相对的语法就稍严格些。例如在[ ... ]中能够用引号括起操做符,由于在作命令行扩展时会去掉这些引号,而在[[ ... ]]则不容许这样作;

         $[[ "-z" "" ]]   报错,而$[“-z” “”]  true

相关文章
相关标签/搜索