条件测试
$? 返回码
判断命令或者脚本是否执行成功(最近的一条)
0 ture 为真就是成功 成立
非0 false 失败或者异常
test命令 可以进行条件测试 然后根据的是返回值来判断条件是否成立
test -e 测试目录和文件是否存在 exist
test -d 只能测试目录是否存在
test -f 只能测试文件是否存在
test -r 测试当前用户是否对文件或者目录有读权限
test -w 测试当前用户是否对文件或者目录有写权限
test -x 测试当前用户是否对文件或者目录有执行权限、
整数比较符(以下操作符只能用于整数比较)
-eq 等于 == 既可以比较整数,也可以比较字符串
-ne 不等于 !=
-gt 大于 >
-lt 小于 <
-ge 大于等于 >=
-le 小于等于 <=
整数比较符的第二种
[ ]
整数比较符第三种
[[ ]] 可以使用更高级的模式,可以使用正则表达式,而且在双括号当中,使用字符串的时候可以不加引号
[ ] 歧义
整数比较符第四种
(()) 运算符
逻辑与和逻辑或
与 && 条件都满足才成立 -a
[ $a -ne 1] && [ $a -ne 2 ]
[ $a -ne 1 -a $a -ne 2 ]
或 || 条件有一个满足就成立 -o
[[]] 双括号中间有多个条件只能有&&,||符号隔开
if语句
单分支结构
if 后面是条件测试语句
then 命令序列,只有条件测试语句成立,才会执行then的命令模块
fi 结束语句
if [ 3 -gt 2 ]
then
echo "ok"
fi
双分支结构
if [ 3 -gt 4 ]
then
echo "ok"
else
echo “no”
fi
条件满足执行then,不满足执行else,执行完毕,语句结束
多分支结构
if []
then
命令序列
elif []
then
命令序列
elif []
then
命令序列
else
命令序列
fi
read -p "请输入一个整数:" num
if [ $num -gt 10 ]
then
echo "1"
elif [ $num -gt 20 ]
then
echo "2"
else
echo "3"
fi
#请输入您的分数,0-100
大于等于85,且小于等于100 优秀
大于等于70,且小于等于84 一般
大于等于60,且小于等于69 合格
小于60,30遍
read -p "请输入你的分数:" num
if [ $num -ge 85 -a $num -le 100 ]
then
echo "优秀"
elif [ $num -ge 70 -a $num -le 84 ]
then
echo "一般"
elif [ $num -ge 60 -a $num -le 69 ]
then
echo "合格"
else
echo "抄30遍"
fi
嵌套
#num自定义输入,只有整数才可以进入分数的取件
read -p "请输入你的分数:" num
if [[ $num -eq $num ]] &> /dev/null
then
if [ $num -ge 85 -a $num -le 100 ]
then
echo "优秀"
elif [ $num -ge 70 -a $num -le 84 ]
then
echo "一般"
elif [ $num -ge 60 -a $num -le 69 ]
then
echo "合格"
else
echo "抄30遍"
fi
else
echo "输入的不是整数"
fi
case语句
相当于多分支结构
case 变量值 in
模式1)
命令序列
;;
模式2)
命令序列
;;
*)
命令序列
esac
#num自定义输入,只有整数才可以进入分数的取件
read -p "请输入你的分数:" num
[[ $num -ge 80 && $num -le 100 ]] && a="great"
[[ $num -ge 70 && $num -le 79 ]] && a="standard"
[[ $num -ge 60 && $num -le 69 ]] && a="false"
case $a in
great)
echo "$num分,优秀"
;;
standard)
echo "$num分,一般"
;;
false)
echo "$num分,不及格"
;;
*)
echo "不及格"
esac