条件测试操作
文件测试
整数值比较
字符串比较
逻辑测试(三元运算符)
if语句
单分支结构
双分支结构
多分支结构
case语句结构
条件测试操作
Shell环境根据命令执行后的反回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,当返回值为非0值(假false)表示失败或异常
test 命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立($?返回值为0表示条件成立)
格式一:test 条件表达式
格式二:[ 条件表达式 ] # 方括号与条件表达式之间需要至少一个空格进行分割
文件测试
格式 : 操作符 文件名或者目录
常用的测试操作符
- -d∶ 测试是否为目录(Directory)
- -e∶ 测试目录或文件是否存在(Exist)
- -f∶ 测试是否为文件(File)
- -r∶ 测试当前用户是否有权限读取(Read)
- -w∶ 测试当前用户是否有权限写入(Write)
- -x∶测试当前用户是否有权限执行(eXcute)
- -L∶测试是否为软链接文件
整数值比较
格式 :[ 整数1 操作符 整数2 ]
常用的测试操作符
- -eq∶ 等于(Equal)
- -ne∶ 不等于(Not Equal)
- -gt∶ 大于(Greater Than)
- -lt∶ 小于(Lesser Than)
- -le∶ 小于或等于(Lesser or Equal)
- -ge∶ 大于或等于(Greater or Equal)
字符串比较
格式1 :[ 字符串 = 字符串2 ]
格式2 :[ -z 字符串 ]
常用的操作符
- =∶ 字符串内容相同
- !=∶ 字符串内容不同,!号表示相反的意思
- z∶字符串内容为空
逻辑测试(三元运算符)
格式1 :[ 表达式1 ] 操作符 [ 表达式2 ]
格式2 :命令1 操作符 命令2
常用的测试操作符
- -a或&&∶ 逻辑与,"而且"的意思
- -o或||∶ 逻辑或,"或者"的意思
- !∶逻辑否
三元 都成立 只取前面的 前面不成立 就取后面的
如果只有一个判断式要进行,那么我们可以使用单分支的if语句
格式:
if [ 条件判断式 ]; then
当条件判断成立时,可以进行的命令工作内容
fi
双分支结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了
格式 :
if [ 条件判断式 ]; then
当条件判断成立时,可以进行的命令工作内容
else
当条件判断不成立时,可以进行的命令工作内容
fi
多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构
格式 :
if [ 条件判断式 ]; then
当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; then
当条件判断成立时,可以进行的命令工作内容
else
当上面的条件判断都不成立时,可以进行的命令工作内容
fi
case语句结构
格式 :
case 变量名称 in
“第一个变量内容”
程序段
;;
“第二个变量内容”
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
示例一
#!/bin/bash
#Determine grades and scores
read -p "请输入你的分数(0-100):" score
[ $score -ge 90 -a $score -le 100 ] && a="great"
[ $score -ge 70 -a $score -le 89 ] && a="medium"
[ $score -ge 60 -a $score -le 69 ] && a="pass"
[ $score -lt 60 ] && a="fail"
case $a in
great)
echo "优秀"
;;
medium)
echo "中等"
;;
pass)
echo "及格"
;;
fail)
echo "不及格"
;;
*)
echo "输入有误"
esac
示例二
#!/bin/bash
#Determine Input
read -p "请输入一个字符:" zifu
case "$zifu" in
[a-z]|[A-Z])
echo "你输入的是字母"
;;
[0-9])
echo "你输入的是数字"
;;
*)
echo "你输入的是其他字符"
esac