一、文件测试运算符
1. -e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]
2. -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]
3. -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]
4. -L filename 如果 filename为符号链接,则为真 如: [ -L /usr/bin/grep ]
5. -r filename 如果 filename可读,则为真 如: [ -r /var/log/syslog ]
6. -w filename 如果 filename可写,则为真 如: [ -w /var/mytmp.txt ]
7. -x filename 如果 filename可执行,则为真 如: [ -L /usr/bin/grep ]
8. filename1-nt filename2 如果 filename1比 filename2新,则为真 如: [
/tmp/install/etc/services -nt /etc/services ]
9. filename1-ot filename2 如果 filename1比 filename2旧,则为真 如: [
/boot/bzImage -ot arch/i386/boot/bzImage ]
二、字符串运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
1. -z string 如果 string长度为零,则为真 如: [ -z "$myvar" ]
2. -n string 如果 string长度非零,则为真 如: [ -n "$myvar" ]
3. string1= string2 如果 string1与 string2相同,则为真 如: ["$myvar" = "one two three"]
4. string1!= string2 如果 string1与 string2不同,则为真 如: ["$myvar" != "one two three"]
三、关系运算符
1. num1-eq num2 等于 如: [ 3 -eq $mynum ]
2. num1-ne num2 不等于 如: [ 3 -ne $mynum ]
3. num1-lt num2 小于 如: [ 3 -lt $mynum ]
4. num1-le num2 小于或等于 如:[ 3 -le $mynum ]
5. num1-gt num2 大于 如:[ 3 -gt $mynum ]
1. -e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]
2. -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]
3. -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]
4. -L filename 如果 filename为符号链接,则为真 如: [ -L /usr/bin/grep ]
5. -r filename 如果 filename可读,则为真 如: [ -r /var/log/syslog ]
6. -w filename 如果 filename可写,则为真 如: [ -w /var/mytmp.txt ]
7. -x filename 如果 filename可执行,则为真 如: [ -L /usr/bin/grep ]
8. filename1-nt filename2 如果 filename1比 filename2新,则为真 如: [
/tmp/install/etc/services -nt /etc/services ]
9. filename1-ot filename2 如果 filename1比 filename2旧,则为真 如: [
/boot/bzImage -ot arch/i386/boot/bzImage ]
二、字符串运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
1. -z string 如果 string长度为零,则为真 如: [ -z "$myvar" ]
2. -n string 如果 string长度非零,则为真 如: [ -n "$myvar" ]
3. string1= string2 如果 string1与 string2相同,则为真 如: ["$myvar" = "one two three"]
4. string1!= string2 如果 string1与 string2不同,则为真 如: ["$myvar" != "one two three"]
三、关系运算符
1. num1-eq num2 等于 如: [ 3 -eq $mynum ]
2. num1-ne num2 不等于 如: [ 3 -ne $mynum ]
3. num1-lt num2 小于 如: [ 3 -lt $mynum ]
4. num1-le num2 小于或等于 如:[ 3 -le $mynum ]
5. num1-gt num2 大于 如:[ 3 -gt $mynum ]
6. num1-ge num2 大于或等于 如: [ 3 -ge $mynum ]
布尔运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| | 逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
算术运算符
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | `expr $a + $b` 结果为 30。 |
- | 减法 | `expr $a - $b` 结果为 -10。 |
* | 乘法 | `expr $a \* $b` 结果为 200。 |
/ | 除法 | `expr $b / $a` 结果为 2。 |
% | 取余 | `expr $b % $a` 结果为 0。 |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
== | 相等。用于比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 |
!= | 不相等。用于比较两个数字,不相同则返回 true。 | [ $a != $b ] 返回 true。 |