Shell编程条件语句

282 阅读3分钟

image.png


条件测试

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,返回值为非0值时表示失败或异常

test命令
对特定条件进行测试,并根据返回值来判断条件是否成立。

  • 格式一:test 条件表达式 image.png

  • 格式二:[条件表达式]
    注意:方括号“["或"]”与条件表达式之间需要至少一个空格进行分隔 image.png

文件测试

[ 操作符 文件或目录 ]

常用的操作符

操作符作用
-e测试目录或文件是否存在
-d测试是否为目录
-f测试是否为文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试是否设置有可执行权限
-L测试是否为符号链接
  • 测试目录或文件是否存在 image.png

  • 测试是否为文件或目录 image.png image.png

  • 测试权限 image.png

整数测试

#整数值比较
[ 整数变量1 操作符 整数变量2 ]

常用的操作符

操作符作用
-eq等于
-ne不等于
-gt大于
-lt小于
-le小于等于
-ge大于等于
  • 检测用户数量 image.png

  • 检测内存使用大小 image.png

字符串测试

#检测两字符串是否相同
[ 字符串1 = 字符串2 ][ 字符串1 == 字符串2 ]
#检测两字符串是否不同
[ 字符串1 != l字符串2 ]
#检查字符串是否为空(zero),对于未定义或赋予空值的变量将视为空串
[ -z "字符串" ]
#检查是否有字符串存在
[ -n "字符串" ]

注意:引号的使用,这是防止空格扰乱代码的好方法 image.png

  • 测试当前语言环境 image.png

  • 测试读入的字符串 image.png

逻辑测试

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

常用操作符

操作符作用
-a 或 &&逻辑与,“而且”的意思,前后条件都得成立
-o 或 ||逻辑或,“或者”的意思,前后条件成立一个即可
!逻辑否

image.png image.png

if语句

补充:三元运算符
#C语言和JAVA中
#条件运算符如果成立,取值1;如果不成立,取值2
条件运算符?值1:值2
#SHELL中
[ 条件运算符 ] && 值1 || 值2

image.png

if单分支语句

if 条件测试操作
    then 命令序列
fi

image.png

  • 磁盘空间警告
    配置文件demo5.sh image.png image.png 为方便演示,此处脚本文件中判断条件改成-gt 5 image.png

if双分支语句

if 条件测试操作
    then 命令序列1
    else 命令序列2

image.png

  • 判断主机是否存活 image.png image.png

  • 检测80端口是否在运行 image.png image.png image.png

if多分支语句

if 条件测试操作1
  then 命令序列1
elif 条件测试操作2
  then 命令序列2
else
  命令序列3
fi

image.png

  • 分数定级 image.png image.png

case分支语句

case 变量值 in
模式1)
  命令序列1
  ;;
模式2)
  命令序列2
  ;;
......
\*)
  默认命令序列
esac

image.png

  • 分数定级 image.png image.png

case语句管理firewalld服务

进入/etc/init.d/目录中写一个firewalld脚本 image.png

开启服务,查看服务 image.png

停止服务 image.png

错误输入 image.png