Shell编程之条件测试和语句(我觉得case语句比if语句好用!!!)

138 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情

条件测试操作

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功

  • 当返回值为0时为真
  • 返回非0值为假

基本格式:

1.test + 条件表达式

2 [ 条件表达式 ]

文件测试

  • [ 操作符 文件或目录 ]
  • test 操作符 文件或目录

常见操作符 image.png

例:检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限

image.png

整数值比较

格式:[ 整数变量 操作符 整数变量 ]

常见操作符

image.png

image.png

字符串比较

  • =:字符串内容相同
  • !=:字符串内容不同,! 号表示相反的意思
  • -z:字符串内容为空
  • -n:字符是否存在

常用格式:

  1. [ "字符串1"  =  "字符串2" ]   测试字符串1和字符串2的内容是否相同  
  2. [ "字符串1" !=  "字符串2” ]   测试字符串1和字符串2的内容是否不同  
  3. [ -z "字符串" ]   测试字符串是否为空,或者指定的变量是否为空值。
  4.  [ -n "字符串" ]   测试字符串是否存在,即是否不为空。

image.png

逻辑测试

[ 表达式 ] 操作符 [ 表达式 ]

  • -a或&& :逻辑与,“而且”的意思,全真才为真。
  • -o或|| :逻辑或,“或者”的意思,一真即为真。
  • ! :逻辑否。

例:

image.png

三元运算操作

  • [ 表达式 ] && a || b
  • 当表达式为真时,取a值;当表达式为假时,取b值

例:

image.png

image.png

if语句

if单分支结构

if 条件测试

then 命令序列

fi

例:判断已用磁盘空间是否大于80%,如果是就报警提示

image.png

将80%改为10%,运行即可看见报警信息

image.png

if双分支结构

if 判断条件  

then  

条件成立的分支代码  

else  

条件不成立的分支代码  

fi

例:检测80端口是否在监听,如果是,则提示”网站服务已在运行“;如果否,则启动httpd服务。

image.png

image.png

if多分支结构

例:输入自己的分数,不同分段执行不同的结果 image.png

image.png

case语句

格式:

image.png

实例:输入自己的分数,不同分段执行不同的结果

image.png image.png