1.if语句
if 判断条件 ; then
命令
fi
#或
if 判断条件
then
命令
fi
实例:判断命令是否执行成功,成功则输出语句This is ok.
#!/bin/bash
ls /mnt > /dev/null
if [ $? -eq 0 ] ; then
echo "This is ok."
fi
2.if-else语句
if 判断条件 ; then
命令1
else
命令2
fi
实例:判断考试是否通过。
#!/bin/bash
echo "please input score:"
read SCORE
if [ $SCORE -ge 60 ]; then
echo "exam is pass!"
else
echo "exam is fail!"
fi
3.多重if-else语句
if 判断条件1 ; then
命令1
elif 判断条件2 ; then
命令2
elif 判断条件3 ; then
命令3
...
else
命令n
fi
实例:判断键盘输入的数字,如果等于零则输出0,如果大于0则输出“这是一个正数”,如果小于0则输出“这是一个负数”。
#!/bin/bash
read -p "请输入一个数字:" num
if [ $num -eq 0 ] ; then
echo $num
elif [ $num -gt 0 ] ; then
echo "这是一个正数"
else
echo "这是一个负数"
fi
4.case语句
case 变量或表达式 in
变量或表达式1)
命令1
;;
变量或表达式2)
命令2
;;
...
*)
默认命令
esac
实例:实现菜单功能。
#!/bin/bash
cat<<eof
***********
1.增加
2.删除
3.修改
4.查询
***********
eof
read -p "输入你的选择(数字):" num
case $num in
1)
echo "增加"
;;
2)
echo "删除"
;;
3)
echo "修改"
;;
4)
echo "查询"
;;
*)
echo "输入的选择无效,请输入有效选择"
esac
注意:shell的case控制语句是不会出现case穿透现象。
#!/bin/bash
cat<<eof
***********
1.增加
2.删除
3.修改
4.查询
***********
eof
read -p "输入你的选择(数字):" num
case $num in
1)
echo "增加"
#期待出现case穿透
2)
echo "删除"
;;
3)
echo "修改"
;;
4)
echo "查询"
;;
*)
echo "输入的选择无效,请输入有效选择"
esac
实际运行时会报语法错误:
[root@iz2zefozq9h39txdb8s7npz shelldemo]# ./test.sh
***********
1.增加
2.删除
3.修改
4.查询
***********
输入你的选择(数字):1
./test.sh:行15: 未预期的符号 `)' 附近有语法错误
./test.sh:行15: `2)'
那么如果多个值输出同一个结果怎么办呢?
实例:判断输入的月份是大月还是小月。
#!/bin/bash
read -p "输入月份(1-12的数字):" month
case $month in
1 | 3 | 5 | 7 | 8 | 10 | 12)
echo "大月"
;;
2 | 4 | 6 | 9 | 11)
echo "小月"
;;
*)
echo "输入的月份无效!"
esac