条件测试、if语句和case语句
一.条件测试
1.test命令
测试表达式是否成立,若成立返回0,否则返回其他数值。
格式一:test 条件表达式
格式二:[ 条件表达式 ]
echo $? 若返回0则成立,返回其他数值则不成立。
2.文件测试
[ 操作符 文件或目录 ]
echo $? 若返回0则成立,返回其他数值则不成立。
常用的测试操作符
操作符 | 作用 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
3.整数值比较
[ 整数1 操作符 整数2 ]
常用的测试操作符
操作符 | 说明 |
---|---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
4.字符串比较
格式一:[ 字符串 = 字符串 ] 或 [ 字符串 != 字符串 ]
格式二:[ -z 字符串 ] 或 [ -n 字符串 ]
常用的测试操作符
操作符 | 说明 |
---|---|
= | 字符串内容相同 |
!= | 字符串内容不同 |
-z | 字符串内容为空 |
-n | 是否有字符串 |
5.逻辑测试
格式一:[ 表达式1 ] 操作符 [ 表达式2 ]
格式二:命令1 操作符 命令2
常用的测试操作符
操作符 | 说明 |
---|---|
-a或&& | 逻辑与,而且的意思,前后条件需都成立 |
-o或▕▕ | 逻辑或,或者的意思,只需其中一个条件成立 |
! | 逻辑否 |
-a 与 -o 用于格式二,&& 与▕▕ 用于格式一,&& 与▕▕ 可用于[[ ]]结构中,以上条件都是输出第一个符合条件的结果
二.if语句的结构
1.单分支结构
if 条件测试语句
then 命令序列
fi
2.双分支结构
if 条件测试语句
then 命令序列1
else 命令序列2
fi
3.多分支语句
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
if语句测试题
提示用户输入内容,使用if 语句判断输入的内容是否为整数。再判断输入的内容是奇数还是偶数。
#!/bin/bash
read -p "输入一个整数:" number
expr $number + 1 &>/dev/null
if [ $? -eq 0 ]
then
if [ $number = 0 ]
then
echo "$number 是为非奇非偶的偶数"
elif [ $(($number%2)) == 0 ]
then
echo "$number 是偶数"
else
echo "$number 是奇数"
fi
else
echo "$number 不是整数"
fi
测试结果
提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
#!/bin/bash
read -p "请输入你的成绩:" s
if [ "$s" -gt 0 -a "$s" -le 10 ] &> /dev/null
then
echo "恭喜你进入决赛"
read -p "请输入你的性别:" x
if [ "$x" = 男 ]
then
echo "恭喜你进入男子组决赛"
elif [ "$x" = 女 ]
then
echo "恭喜你进入女子组决赛"
else
echo "输入错误,请重新输入"
fi
elif [ "$s" -gt 10 ] &> /dev/null
then
echo "你已被淘汰"
else
echo "输入错误,请重新输入"
fi
测试结果
三.case语句结构
case多分支结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
…………
*)
默认命令序列
esac
case语句测试题
用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
#!/bin/bash
read -p "请输入文件:" name
case $1 in
*.gz)
if [ -f $1 ]
then
tar -zxvf $1 -C /opt
fi
;;
*.bz2)
if [ -f $1 ]
then
tar -jxvf $1 -C /opt
fi
;;
*)
echo "文件格式错误"
esac
测试结果
扫描二维码关注公众号,回复:
13110865 查看本文章
