Shell中条件测试

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或|| 判断操作符两边一边为真,结果为真,否则为假,”逻辑或“
! 判断操作符两边均为假,结果为真,否则为假,”逻辑否“
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸢时望巧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值