测试语句
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}”。
实验八
根据用户输入的两个数字判断它们的关系。