基本语法
为了判断shell程序的某种或几种条件是否成立,shell提供了一组测试运算符。通过返回值判断真假
条件测试的语法有两种:test 和[(为了方便阅读使用[])
test expression
[ expresssion ] #条件和左右括号之间必须带空格
字符串测试
字符串测试运算符
运算符 | 说明 |
---|---|
string | 判断指定的字符串是否为空 |
string1=string2 | 判断两个字符串是否相等 |
string1!=string2 | 判断两个字符串是否不等 |
-n string | 判断string是否是非空字符串 |
-z string | 判断string是否是空字符串 |
#!/bin/bash
x="abc"
test $x #x不为空,所以返回值应该是0
echo $?
y="def"
[ "$x" = "$y" ] #判断两个相等,而x,y两个字符串不相等,输出应该是错误的
echo $?
test "$X" != "$y" #判断两个不相等,输出应该是对的
echo $?
结果如下
整数测试
常见整数运算符
运算符 | 说明 |
---|---|
number1 -eq number2 | 比较两个是否相等,如果相等正确输出 |
number1 -ne number2 | 两个是否不等,不等则正确输出 |
number1 -gt number2 | number1是否大于number2,是则正确输出 |
number1 -lt number2 | number1是否小于number2,是则正确输出 |
number1 -ge number2 | 是否大于等于....... |
number1 -le number2 | 是否小于等于....... |
这个很简单
文件测试
常见文件操作符
操作符 | 说明 |
---|---|
-a | 判断文件是否存在。 存在输出0 |
-b | 文件是否存在且为块文件。 |
-c | 文件是否存在且为字符文件 |
-d | 文件是否存在且为目录 |
-e | 与-a相同 |
-s | 文件非空 |
-f | 文件存在且是常规文件 |
-w | 文件存在且可写 |
-L | 文件存在且为符号链接 |
-u | 文件是否有suid位 |
-r | 文件存在且可读 |
-x | 文件存在且可执行 |