Shell之条件语句

测试语句

test —— 条件测试命令,根据一些固定选项可以测试文件、目录、权限

  • -e:测试文件、目录
  • -d:只测试目录
  • -f: 只测试文件
  • -r:测试当前用户下文件或目录是否有读权限
  • -w:测试当前用户下文件或目录是否有写权限
  • -x:测试当前用户下文件或目录是否有写权限

与test用法一致的测试命令 —— 中括号 [ ]

[ -x /opt/123.sh ]

测试opt目录下123.sh这个文件是否有执行权限

常用的测试操作符

整数比较

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -le:小于等于
  • -ge:大于等于

整数及字符串比较

  • ==:等于
  • !=:不等于
  • >:大于 / 不等于
  • <:小于
  • >=:大于等于
  • <=:小于等于

逻辑测试

逻辑测试分为两种类型:逻辑且、逻辑或
表达方式也有两种:[ ] 单中括号 、[ [ ] ] 双中括号

-a或者&& —— 逻辑且,需要前后条件都满足;
单中括号以及双中括号的用法:

[ ”$g“ -gt 10 ] && [ ”$g“ -lt 20 ]

[  "$a"  -gt  10  -a  "$a"  -lt  20  ]

[ [ $g -gt 10 && $g -lt 20 ] ]

#满足g大于10并且满足g小于20即可


-o或者 ||   —— 逻辑或,满足其中一个条件即可
单中括号以及双中括号的用法:

[ ”$g“ -gt 10 ] || [ “$g” -lt 20 ]

[  "$a"  -gt  10  -o  "$a"  -lt  20  ] 

[ [ $g -gt 10 || $g -lt 20 ] ]

#满足g大于10或g小于20其中一个条件即可

双中括号功能更强大些,可直接使用变量,无需引号;支持正则表达式

if 但分支语句

if 但分支语句结果图:

Shell之条件语句_第1张图片

 例:

[rootalocalhost opt]# vim 1.sh
#如果3大于2,则输出“ok”
If [[ 3 -gt 2 ]]
then
echo "ok"
fi

执行脚本,成功则输出ok,fi结束语

if 双分支语句

if 双分支语句结果图:

Shell之条件语句_第2张图片

 例:

[rootalocalhost opt]# vim 2.sh
#输入的数字在10-20之间则输出ok,否则输出错误。
read -p "输入一个数字:"
if [[ $a -gt 10 $$ $a -lt 20 ]]
then
echo "ok"
else
echo "错误"
fi

比单分支语句多了else控制语句

if 多分支语句

if 多分支语句结果图:

Shell之条件语句_第3张图片

比多分支语句有多了elif分支条件语句

if 嵌套式语句,它在多分支语句基础上多出一个 if 条件,即 if 条件下嵌套了一个 if 条件

case 多分支语句

Shell之条件语句_第4张图片Shell之条件语句_第5张图片

 例:

[rootalocalhost opt]# vim 3.sh
read -p "请输入个数字:" score
[[ $score -ge 80 && $score -le 100 ]] && a="great"
[[ $score -ge 60 && $score -le 79 ]] && a="standard"
case $a in
great)
    echo "$a分,优秀"
;;

standard)
    echo "$a分,一般"
;;

*)
    echo "$a分,不及格"

esac

实验

实验一

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

Shell之条件语句_第6张图片

 

 

实验二

提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛
大于10秒的都淘汰,如果输入其它字符则提示重新输入;
进入选拔赛的成员再进一步判断男女性别
男生进男生组,女生进女生组
如果输入错误请提示错误(整数判断 )

Shell之条件语句_第7张图片

 Shell之条件语句_第8张图片 

实验三

用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录

Shell之条件语句_第9张图片

 Shell之条件语句_第10张图片

 

实验四

提示用户输入内容,使用if 语句判断输入的内容是否为整数。

Shell之条件语句_第11张图片

Shell之条件语句_第12张图片

实验五

根据上一题再判断输入的内容是奇数还是偶数。

 Shell之条件语句_第13张图片

 Shell之条件语句_第14张图片

 

实验六

用if 语句判断主机是否存活

Shell之条件语句_第15张图片

 Shell之条件语句_第16张图片

 

实验七

用case语句控制 firewalld start|stop|restart|status 来管理firewalld服务
要求如果命令选项不对,则提示输入不正确: $0 {start|stop|status|restart}”。

Shell之条件语句_第17张图片

 Shell之条件语句_第18张图片

实验八

根据用户输入的两个数字判断它们的关系。

Shell之条件语句_第19张图片

 Shell之条件语句_第20张图片

 

你可能感兴趣的:(linux,运维,服务器)