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

来源:互联网 发布:linux 屏幕 测试 编辑:程序博客网 时间:2024/05/01 23:42

$()

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

可以使用echo $var | xargs –n 1查看

${}

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

$(())

用于计算,同样可用于计算的还有let, expr

res=$((5+2))

let res=5+2

res=`expr 5 + 2`


[[]]与[]

1、  前者“[[”是关键字,后者是内建命令,相当于test ;

2、  逻辑判断用法不一致

[ : -a –o

[[ : && ||

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


4、  [[]]可以用于算术运算,而[]不行

如:

[[ 99+1 –eq 100 ]]  true

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

5、 命令行参数的区别

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

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

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

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

0 0