目录
- 一、条件测试
- 二、if语句
- 三、case分支语句
- 例题
-
-
- 1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
- 2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
- 3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
- 4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。
- 5.根据上一题再判断输入的内容是奇数还是偶数。
- 6.用if 语句判断主机是否存活
- *7.用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中够使用 service start|stop|restart|status firewalld 来管理firewalld服务,要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”。
-
一、条件测试
(一)test测试
测试表达式是否成立,若成立返回0,否则返回其他数值
注意 空格 空格 空格
格式1:test 条件表达式
格式2:[ 条件表达式 ]
(二)文件测试
格式
[ 操作符 文件或目录 ]
(三)整数测试
整数值比较
[ 整数1 操作符 整数2 ]
(四)字符串测试
字符串比较
(五)逻辑测试
二、if语句
(一)if单分支语句
if 条件测试操作
then 命令序列
fi
(二)if双分支语句
if 条件测试操作
then 命令序列1
else 命令序列2
fi
例题
if 80端口是否在监听
then 网站服务已在运行
else 启动httpd服务
fi
(三)if多分支语句
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
例题
#!/bin/bash
read -p "请输入你的分数:" score
if [ $score -eq 100 ];then
echo "优秀"
elif [ $score -ge 90 ] && [ $score -lt 100 ];then
echo "$score分,抄10遍"
elif [ $score -ge 70 ] && [ $score -lt 89 ];then
echo "$score分,抄20遍"
elif [ $score -ge 60 ] && [ $score -lt 69 ];then
echo "$score分,抄30遍"
elif [ $score -ge 0 ] && [ $score -lt 60 ];then
echo "输入有误"
fi
三、case分支语句
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
........
*)
默认命令序列
esac
例题
例题
1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
#!/bin/bash
if [ -f ~/test.sh ];then
echo “test.sh文件存在”
if [ -x ~/test.sh ];then
echo “test.sh有可执行权限”
else
echo “没有可执行权限”
fi
else
echo “文件不存在”
fi
3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。
#!/bin/bash
read -p "输入一个数字:" a
expr $a + 1 &>/dev/null
if [ `echo $?` = 0 ]; #if [ $? = 0 ];
then echo "输入的为整数"
else echo "输入的不是整数"
fi
5.根据上一题再判断输入的内容是奇数还是偶数。
6.用if 语句判断主机是否存活
#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ </span><span class="token keyword">echo</span> $?<span class="token variable">
-eq 0 ]
then
echo " host $1 is on"
else
echo “host $1 is off”
fi