Fuhui

关于shell的各种括号的用法


大部分情况可以通用,建议使用双中括号[[]],不同的shell表现也不尽相同

正确的用法

1. 逻辑与:[ "2" = "2" -a "3" = '3' ]、[[ "2" = "2" && "3" = '3' ]]、[ "2" = "2" ] && [ "3" = '3' ]
2. 逻辑或:[ "2" = "2" -o "3" = '3' ]、[[ "2" = "2" || "3" = '3' ]]、[ "2" = "2" ] || [ "3" = '3' ]
3. []可以替换为test :if [ -e zshrctest ];then;echo "yes";fi 
             等价于 if test -e zshrctest;then;echo "yes";fi
3. var=name;[[ $var = na?? ]] 问号代表一个字符
4. arrary=(aa bb cc);${arrary[@]}表示全部数组元素;echo ${arrary[1]}表示第一个元素,注意是从1开始的

错误的用法

[[ "2" = "2" -o "3" = '3' ]]
var=name;[ $var = na?? ]

小括号用法

1.  `pwd`等同于(pwd)
2.  数组初始化arrary=(aa bb cc)
3.  for i in $(seq 0 4);do echo $i;done 
    for i in `seq 0 4`;do echo $i;done 
    for ((i=0;i<5;i++));do echo $i;done 
    for i in {0..4};do echo $i;done
4.  (pwd;ls) 新开一个shell顺序执行命令组

大括号用法

1. touch {a,b}.txt 结果为a.txt b.txt ; touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt
2. 尽量使用${a}代替$a 
3. 代码块 { pwd;ls }  同一个shell中顺序执行代码块