单小括号(执行命令)
echo $(ls -al) #类似echo `ls -al`
b=(1 2 3 4)#数组使用 echo ${b[@]} 打印所有数组 echo ${b[0]}打印第一个数组 打印数组长度echo ${#b[*]}
双小括号(计算使用)
echo $((1+3))# 类似let b=4+2 注意等号之间没有空格
c=$(echo "1+2.5"|bc) #如果有小数点参与计算必须使用bc计算器 类似c=`echo "1+2.5"|bc`
单中括号
1)bash 的内部命令,[和test是等同的。if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的。这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码。
2)在进行比较运算时使用。test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较;整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较”ab”和”bc”:[ ab \< bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。
a=3;b=4
[ $a eq $b ] # false (整数比较)
[ "$a" eq "$b" ] #false (整数比较)
[ a==b ] #true (字符串比较)
双中括号
①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。
②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。
③使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。
④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。
大括号(多用来输出变量)
a=3
echo ${a} # 打印变量
touch {a,b,c,d,e,f}.sh #用大括号进行拓展:此时可以使用大括号对文件进行批量操作
touch {a..f}.sh #第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用
{ cmd1;cmd2;cmd3;} #多命令集合最后一个必须要有分号
${a/a/b}#字符串替换