1.单小括号()
(1)命令组,括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。形如(cmd1;cmd2;cmd3),这三条命令的执行不会影响当前的shell环境。
(2)命令替换,$(command)
(3)定义数组,array = ("beijing" "tianjin" "chongqin" "shanghai")
2.双小括号
(0)((expr))中的expr可以支持C语言中的各种表达式,甚至连a>b?a:b这样的三目表达式都支持
(1)(())中使用变量,均不需要$符号,例如,((a=b+c))
(2)(())中可以有多个表达式,各个表达式用逗号,分割,例如((a++,b++,c++))
(3)((expr))中expr表达式不仅可以是关系表达式,也可以是算术表述式,比如((a>b)) 或者((a+b))
(4)((expr))可以用在for、while、if中的条件判断中,例如if((a>b)) while((a==b))
(5)可以使用$((expr))获取expr的表达式计算结果值
3.单中括号[]
(1)[]中[是base的内置命令,和test命令是一样的。]表示条件表达式的结束。也就是说,
if [ $num1 -eq $num2 ] ; then 等价于 if /usr/bin/[ $num1 -eq $num2 ] ; then 还等价于if test $num1 -eq $num2 ; then
(2)[]的具体用法有
{1..9} #使用两个点号连接,表示1到9 {1,8,9} #使用逗号连接,表示1,8,9 #使用举例: #统计00点30分到00点44分之间 每分钟的qps for i in {30..44}; do echo -n "01-10 00:${i} qps stat:" && cat access.log.2016011000 | grep "01-10 00:${i}" | wc -l done #统计00点30分,00点35分,00点44分这三个时刻点的qps for i in {30,35,44}; do echo -n "01-10 00:${i} qps stat:" && cat access.log.2016011000 | grep "01-10 00:${i}" | wc -l done #touch文件 touch access.log.20160110{00,15,30,45}