条件语句在编写脚本经常遇到;用于处理逻辑问题。
一 IF 语句
if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:
if ... fi 语句;
if ... else ... fi 语句;
if ... elif ... else ... fi 语句。
例如: 就拿a=10;b=20来举例
>1. if ... fi 语句
: if01.sh
#!/bin/sh
a=10
b=20
if [ $a -lt $b ];then #$a小于$b
echo "10 is less then 20"
fi
>2.if ... else ... fi 语句
:if02.sh
#!/bin/sh
a=10
b=20
if [ $a -lt $b ];then
echo "10 is less then 20"
else
echo "10 is not less then 20"
fi
>3.if ... elif ... else ... fi 语句
:if03.sh
#!/bin/sh
a=10
b=20
if [ $a -lt $b ];then
echo "10 is less then 20"
elif [ $a -eq $b ];then
echo "10 is equal to 20"
else
echo "10 is not less then 20" #我没找到好点的编辑器,我是用ue
fi
二 case 语句
#case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。语法格式:
case 值in
模式1)
命令1
. . .
;;
模式2)
命令2
. . .
;;
esac
case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。
如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令
下面的脚本提示输入1到4,与每一种模式进行匹配:
case01.sh
#!/bin/sh
read -n1 -p "please input your number: " num
case $num in
1)
echo "you select 1"
;;
2)
echo "you select 2"
;;
3)
echo "you select 3"
;;
4)
echo "you select 4"
;;
*)
echo "you select other"
;;
esac