Shell之条件语句

文章介绍了Linuxshell脚本中用于测试文件属性、权限以及执行逻辑操作的命令,如test和[[]]。详细阐述了-e、-d、-f等文件测试选项,以及-eq、-ne等整数比较操作符。文中还提到了逻辑与(&&),逻辑或(||)的使用,并展示了if和case语句在处理条件分支时的应用场景,包括单分支、双分支、多分支和嵌套式if语句。
摘要由CSDN通过智能技术生成

测试语句

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 但分支语句结果图:

 例:

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

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

if 双分支语句

if 双分支语句结果图:

 例:

[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 多分支语句结果图:

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

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

case 多分支语句

 例:

[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 文件是否存在,并且检查是否有执行权限

 

实验二

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

  

实验三

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

 

实验四

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

实验五

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

 

 

实验六

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

 

实验七

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

 

实验八

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

G·shining

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

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

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

打赏作者

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

抵扣说明:

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

余额充值