1.小括号
小括号一般用作于命令替换
例如:
a=$( ifconfig |grep eth0 )
这便是将后面括号内的命令返回值赋值给a,其效果等于反引号。
如下:
a=`ifconfig |grep eth0`
这二者表达的意思是一样的
需要注意的是:
shell在变量赋值的时候,等号两边不能有空格,否则会被解释器当成命令来执行,引起报错
2.双小括号
双小括号一般用于作比较的高级数学表达式,如:i++,i--,&&等
例如:
if (( a**20 = 30 ))
需要注意的是:
在作比较的时候,等号两端必须加空格,理解成判断命令执行。(赋值不加空格,比较加空格)
3.中括号
---中括号可以定义测试条件
---中括号中的表达式前后都需要加一个空格
---中括号内一般用于四种类型语句的判断
(1)数值比较
n1 -eq n2 #检查n1是否与n2相等
n1 -ge n2 #检查n1是否大于或等于n2
n1 -gt n2 #检查n1是否大于n2
n1 -le n2 #检查n1是否小于或等于n2
n1 -lt n2 #检查n1是否小于n2
n1 -ne n2 #检查n1是否不等于n2
(2)字符串比较
str1 = str2 #检查str1是否和str2相同
str1 != str2 #检查str1是否和str2不同
str1 < str2 #检查str1是否比str2小
str1 > str2 #检查str1是否比str2大
-n str1 #检查str1的长度是否非0
-z str1 #检查str1的长度是否为0
(3)文件比较
-d file #检查file是否存在且是一个目录
-e file #检查file是否存在
-r file #检查file是否存在且可读
-s file #检查file是否存在且非空
-w file #检查file是否存在且可写
-x file #检查file是否存在且可执行
file1 -nt file2 #检查file1是否比file2新
file1 -ot file2 #检查file1是否比file2旧
(4)符合条件比较
[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]
4.双中括号
---双中括号提供了字符串比较的高级特性(中括号高配)
---括号中可以定义一些正则表达式来匹配字符串
---不是所有的shell解释器都支持双中括号
---双中括号内的表达式前后也必须有一个空格
例如:
A=`ifconfig usb0 |grep 'inet addr'`
B='192.168'
if [[ $A == *$B* ]]