shell 编程条件语句
shell条件语句一、条件测试1.文件测试2.整数测试3.字符串测试4.逻辑测试二、if语句1.if单分支语句2.if双分支语句3.if多分支语句三、case分支语句作业一、条件测试test命令测试表达式是否成立,若成立返回0,否则返回其他数值格式1: test 条件表达式格式2: [ 条件表达式 ]1.文件测试[ 操作符 文件或目录 ]常用的测试操作符-d:测试是否为目录(Directory)-
一、条件测试
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1: test 条件表达式
格式2: [ 条件表达式 ]
1.文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)
-L:测试是是否为符号链接
2.整数测试
[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal) ==
-ne:不等于(Not Equal) !=
-gt:大于(Greater Than) \>
-|t:小于(Lesser Than) \<
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
( (4>5) ) && echo true || echo false
[[4/>5]] && echo true || echo false
查看空闲内存是否< 1024MB
FreeAA=$(free -m | grep "Mem: " | awk ‘{print $4}’)
[ $FreeAA -It 1024 ] && echo ${FreeAA}MB
3.字符串测试
格式1
[ 字符串1 = 字符串2]
[ 字符串1 != 字符串2 ]
格式2
[ -z 字符串 ]
常用的测试操作符
= :字符串内容相同
!= :字符串内容不同,!号表示相反的意思
-z :字符串内容为空
-n :字符串是否存在
4.逻辑测试
格式1: [ 表达式1 ] 操作符 [ 表达式2 ] …
格式2: 命令1 操作符 命令2 …
常用的测试操作符
-a或&&: 逻辑与,“而且”的意思,前后条件需都成立
-o或||: 逻辑或,“或者”的意思,只需前后条件中个成立
!: 逻辑否
二、if语句
1.if单分支语句
if 条件测试操作
then
命令序列
fi
一
if [ 10 -gt 5 ]
then
echo "yes"
fi
二
if [ 10 -gt 5 ];then echo"yes"; fi
三
[ 10 -gt 5 ] && echo "yes"
2.if双分支语句
if 条件测试操作
then 命令序列1
else 命令序列2
fi
if [ $1 -gt 5 ]
then
echo "yes"
else [ $1 -eq 5 ]
fi
3.if多分支语句
if 条件测试操1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
三、case分支语句
case 变量值 in
模式1)
命令序列 1
;;
模式2)
命令序列 2
;;
*)
默认命令序列
esac
作业
1.检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权限
[ -e ~/test.sh -a -x ~/test.sh ]
[[ -e ~/test.sh && -x ~/test.sh ]]
2.提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
vim baimi.sh
#!/bin/bash
read -p "输入100米赛跑秒杀:" boerte
if [ $boerte -gt 0 ] && [ $boerte -le 10 ]
then
{
read -p "请输入性别:" nn
if [ $nn = 男 ]
then
echo "男生组"
elif [ $nn = 女 ]
then
echo "女生组"
else
echo "输入错误"
fi
}
elif [ $boerte -gt 10 ]
then
echo "淘汰"
else
echo "重新输入"
fi
3.用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录cx
vim jieya1.sh
#!/bin/bash
read -p "请输入软件包名称:" jieya
case $jieya in
*[g][z] )
tar zxvf $jieya -C /opt
;;
*[z][2] )
tar jxvf $jieya -C /opt
;;
*)
echo "请输入正确格式(gz/bz2)!"
;;
esac
4.提示用户输入内容,使用if 语句判断输入的内容是否为整数。
#!/bin/bash
read -p "请输入数值" ss
if [ $ss = `awk "BEGIN {print $ss}" | awk -F '.' '{print $1}'` ]
then
echo "是"
else
echo "否"
fi
5.根据上一题再判断输入的内容是奇数还是偶数。
#!/bin/bash
read -p "请输入数值" ss
if [ $ss = `awk "BEGIN {print $ss}" | awk -F '.' '{print $1}'` ]
then
{
if [ `expr $ss % 2` = 0 ]
then
echo "偶数"
else
echo "奇数"
fi
}
else
echo "不是整数"
fi
6.用if 语句判断主机是否存活
#!/bin/bash
read -p "请输入主机IP:" a
if ping -c 3 -i 0.5 -w 2 $a &> /dev/null
then
echo "$a 已运行"
else
echo "$a 不在运行中"
fi
7.用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中
使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,
要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”。
更多推荐
所有评论(0)