Shell脚本之条件测试、if、case条件测试语句

发布于:2023-01-05 ⋅ 阅读:(339) ⋅ 点赞:(0)

目录

一、条件测试

1.1test命令

1.2文件测试

1.2.1文件测试常见选项

1.3整数值比较

1.4字符串比较 

1.5逻辑测试

二、if语句

2.1单分支结构

2.2双分支结构 

2.3多分支结构

三、case语句


一、条件测试

1.1test命令

测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值 。

格式:
test 条件表达式
或 [ 条件表达式 ]  (条件表达式的两边都需要有空格,且此方法更为常用)

1.2文件测试

1.2.1文件测试常见选项

eg1:

 

eg2:

 

eg3:可以使用&&和echo一起用 

eg4:可以和||一起用

 

 eg5:比较两个文件

 

1.3整数值比较

格式:
[ 整数1 操作符 整数2 ]

常见测试操作符:

eg1:查询当前目录下的文件数是否大于10,如果大于,则进行提示。

[root@localhost ~]#ls |wc -l
27
[root@localhost ~]#test `ls |wc -l` -gt 10 && echo 文件数大于10
文件数大于10 

eg2:查看系统内存是否低于1024M,如果低于则提示。


[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1823         330         804           9         688        1271
Swap:          3815           0        3815
[root@localhost ~]# free -m | grep "Mem"
Mem:           1823         330         804           9         688        1270
[root@localhost ~]# free -m | grep "Mem" | awk '{print $4}'
803
[root@localhost ~]# free=`free -m | grep "Mem" | awk '{print $4}'`
[root@localhost ~]# echo $free
803
[root@localhost ~]# test `echo $free` -lt 1024 && echo "内存不足1024M"
内存不足1024M

1.4字符串比较 

格式:
[ 字符串1 = 字符串2 ]             #判断是否相等
[ 字符串1 != 字符串2 ]             #判断是否不等
[ -z 字符串 ]                     #判断字符串内容是否为空

操作符:

 eg: 判断当前系统语言环境是否为“us.en”,如果不是则提示

[root@localhost ~]#echo $LANG
zh_CN.UTF-8
[root@localhost ~]#test `echo $LANG`="us.en"&&echo 当前系统语言不是us.en,当前系统语言为`echo $LANG`当前系统语言不是us.en,当前系统语言为zh_CN.UTF-8

1.5逻辑测试

格式:
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2

操作符:

二、if语句

2.1单分支结构

格式:
if [ 条件判断式 ]; than
    当条件判断成立时,执行一条或多条命令
fi                     

 如果只有一个判断式要进行,那么我们可以使用单分支的if语句 ,只有在条件成立时才会执行,否则不执行任何操作

eg:使用单分支if语句判断test文件是否存在

[root@localhost ~]#if test -e data; then echo 文件存在; fi
文件存在
[root@localhost ~]# 

2.2双分支结构 

if [ 条件判断式 ]; then
    当条件判断成立时,可以执行一条或多条命令
else    
    当条件判断不成立时,可以执行一条或多条命令
fi         

在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了:

eg: 判断用户输入的是否为yes 

 

2.3多分支结构

if [ 条件判断式 ]; then
    当条件判断成立时,可以执行一条或多条命令
elif [ 条件判断式二 ]; then
    当条件判断成立时,可以执行一条或多条命令
else    
    当上面的条件判断都不成立时,可以执行一条或多条命令
fi         

 如果数据需要进行多种不同的判断,则可以使用多分支结构 嵌套使用。

[root@localhost ~]#vim reboot1.sh 
 
read -p "请输入yes或no:" TEST
if [ $TEST = "yes" ]
   then
     echo 你输入的为$TEST!
   elif [ $TEST = "no" ]
      then
         echo 你输入的为$TEST!
else
   echo 你输入的${TEST}有错误,请重启输入yes或者no!  
fi 

 

 

三、case语句

格式:
case 变量名称 in
模式1)
    命令序列
    ;;
模式2)
    程序段
    ;;
*)
    不包含第一个变量内容与第二个变量内容的其他程序执行段
    默认程序段
    ;;
esac

注意点:

  • case行首必须以单词“in”,每一模式必须以单个右括号")"结束

  • 双分号";;"表示命令序列的结束

  • 模式字符串中,可以用方括号表示一个连续的范围,如"[0-9]";还可以使用竖杠|表示或,比如a|b

  • 最后的)表示默认模式,其中的相当于通配符

eg:

 

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到