Shell 条件 if
1 基本结构if
语法
if 条件表达式 ;then
语句块
fi
if用于判断条件是否成立,成立时执行相应的命令语句。如果不成立,则不执行。
等价写法
if 条件表达式
then
语句块
fi
then换行,则前面的分号可以省略。
第1种写法节省位置,第2种写法更清晰。
示例代码
02if.sh
score=100
if [ $score -eq 100 ];then
echo "满分。"
echo "xiaobuteach.com"
fi
声明变量score并初始化为100,判断如果是100分则显示满分。
[ ]为test命令的等价写法,判断是否相等用 -eq,变量名需使用$标记。
条件成立,显示满分。
如果将score的值修改为90,则不会进行满分显示。
等价代码
if [ $score -eq 100 ]
then
echo "满分。"
echo "xiaobuteach.com"
fi
命令行输入变量值
read -p 提示内容 变量名
首先进行提示,然后会停留,我们输入的内容会写入变量。
示例
read -p "请输入分数:" score
if [ $score -eq 100 ]
then
echo "满分。"
echo "xiaobuteach.com"
fi
2 else
语法
if 条件表达式
then
命令语句块1
else
命令语句块2
fi
当条件表达式成立时,执行语句块1中的内容,否则执行语句块2中的内容。
示例代码
文件 02if-02else.sh
read -p "请输入分数:" score
if [ $score -eq 100 ];then
echo "满分。"
echo "xiaobuteach.com"
else
echo "继续加油"
echo "xiaobuteach.com"
fi
3 elif
语法
if 条件1
then
语句块1
elif 条件2
then
语句块2
…
else
语句块n
fi
if与else中间还能嵌套多个elif then;最后的else部分可以省略。
条件1成立,执行语句块1;否则,如果条件2成立,执行语句块2;如果都不匹配,执行else中的语句块。
示例代码
09-if-04-elseif.bat,批处理文件内容如下。
read -p "请输入分数:" score
if [ $score -lt 60 ];then
echo "不及格"
elif [ $score -lt 70 ];then
echo "及格"
elif [ $score -lt 80 ];then
echo "中"
elif [ $score -lt 90 ];then
echo "良"
elif [ $score -lt 100 ];then
echo "优"
elif [ $score -eq 100 ];then
echo "满分。"
echo "xiaobuteach.com"
else
echo "牛逼"
echo "xiaobuteach.com"
fi