在Shell里常用的条件分支语句有 if else 语句和 case语句。
IF ELSE 语句
基本结构:
if condition
then
command1
command2
...
commandN
fi
if else格式
if condition
then
command1
command2
...
commandN
else
command
fi
if else-if else格式
if condition1
then
command1
elif condition2
command2
else
commandN
fi
if else语句经常与test命令结合使用,如下所示:
#! /bin/bash
num1=$((2*3))
num2=$((1+5))
if test $num1 -eq $num2
then
echo 'The two numbers are equal!'
else
echo 'The two numbers are not equal!'
fi
Case语句
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
实例:
echo 'Input a number between 1 to 4'
echo 'Your number is:\c'
read aNum
case $aNum in
1)
echo 'You select 1'
;;
2)
echo 'You select 2'
;;
3)
echo 'You select 3'
;;
4)
echo 'You select 4'
;;
*)
echo 'You do not select a number between 1 to 4'
;;
esac