Shell条件测试语句
Shell脚本就是各种命令、判断和循环语句的集合,如Linux命令、if条件语句、for循环语句等。即Shell脚本把含有逻辑运算的一段可执行代码写在了程序文件中。
Shell中,对指定的条件进行判断,执行条件测试表达式后通常会返回“真”或“假”,执行命令后的返回值为0表示真、非0表示假。
- Shell编程中,通常使用test命令进行条件测试
- 语法形式为“test <测试表达式>”
注:利用test命令进行条件测试表达式时,test命令和“<测试表达式>”之间该有空格
文件测试
例1:使用test -f参数用于判断file是否存在且是否为普通文件,如果file存在且为普通文件,则输出true,否则输出false。
[root@localhost ~]# test -f file && echo true || echo false
false
[root@localhost ~]# touch file
[root@localhost ~]# test -f file && echo true || echo false
true
例2:语法格式:”[<测试表达式>]”,通过[ ]进行条件测试方法,与test命令用法相同
[root@localhost ~]# [ -f file ] && echo 1 || echo 0
1
文件测试操作符如下:
| 操作符 | 含义 |
|---|---|
| -d | 测试是否为目录(Directory) |
| -a | 测试目录或文件是否存在(Exist) |
| -f | 测试是否为文件(File) |
| -r | 测试当前用户是否可读(Read) |
| -w | 测试当前用户是否可写(Write) |
| -x | 测试当前用户是否可执行(Excute) |
整数测试
- 整数测试用于数值之间的运算
- 语法格式:[ 整数 1 操作符 整数2 ]或test 整数1 操作符 整数2
| 操作符 | 含义 |
|---|---|
| -eq | 等于(Equal) |
| -ne | 不等于(Not Equal) |
| -gt | 大于(Greater Than) |
| -lt | 小于(Lesses Than) |
| -le | 小于或等于(Lesser or Equal) |
| -ge | 大于或等于(Greater or Equal) |
例1:测试主机是否正常;使用while循环,设置i的初值为1,如果i小于等于5且$?执行结果为0.则主机为正常状态。
[root@localhost ~]# vim ping02.sh
#!/bin/bash
ip=192.168.10.100
i=1
while [ $i -le 5 ]
do
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up"
fi
let i++
done
关系运算符:
| 符号 | 含义 |
|---|---|
| == | 等于(Equal) |
| != | 不等于(Not Equal) |
| > | 大于(Greater Than) |
| < | 小于(Lesser Than) |
| <= | 小于或等于(Lesser or Than) |
| >= | 大于或等于(Greater or Than) |
例2:
[root@localhost ~]# ((1<2));echo $?
0
[root@localhost ~]# ((1==2));echo $?
1
字符串测试
- 字符串测试操作符用于比较字符串是否相同、测试字符串的长度是否为0.
- 书写表达式为[ 字符串1 = 字符串2 ]、[ 字符串1 != 字符串2 ]或[ -z 字符串 ]
字符串测试运算符
| 符号 | 含义 |
|---|---|
| -z | 判断字符串长度是否为0 |
| -n | 判断字符串长度是否非0 |
| != | 判断两个字符串是否不相等 |
| = | 判断两个字符串是否相等 |
例:安装服务,判断变量user值是否为root,root则安装httpd,不是则提示权限不足。
#!/bin/bash
if [ $user != root ];then
echo "权限不足"
exit
fi
yum -y install httpd
逻辑运算符
- 在Shell条件测试中,使用逻辑运算符实现复杂的条件测试,用于操作两个变量。
- 逻辑运算符语法格式
[ 表达式1 ] 操作符 [ 表达式2 ]
或
命令1 操作符 命令2
逻辑运算符(-a和-o放在[]里面用,&&和||放在[]外面用)
| 运算符 | 含义 |
|---|---|
| -a或&& | 判断操作符两边均为真,结果为真,否则为假,”逻辑与” |
| -o或|| | 判断操作符两边一边为真,结果为真,否则为假,”逻辑或“ |
| ! | 判断操作符两边均为假,结果为真,否则为假,”逻辑否“ |

1297

被折叠的 条评论
为什么被折叠?



