Shell 流程控制
和 Java、PHP 等语言不一样,sh 的流程控制不可为空,如(以下为 PHP 流程控制写法):
实例
<?php
if (isset($_GET["q"])) {
search(q);
}
else {
// 不做任何事情
}
在 sh/bash 里可不能这么写,如果 else 分支没有语句执行,就不要写这个 else。
if else
fi
if 语句语法格式:
写成一行(适用于终端命令提示符):
末尾的 fi 就是 if 倒过来拼写,后面还会遇到类似的。
if else
if else 语法格式:
if else-if else
if else-if else 语法格式:
if else 的 [...] 判断语句中大于使用 -gt,小于使用 -lt。
如果使用 ((...)) 作为判断语句,大于和小于可以直接使用 > 和 <。
以下实例判断两个变量是否相等:
实例
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
输出结果:
使用 ((...)) 作为判断语句:
实例
a=10
b=20
if (( $a == $b ))
then
echo "a 等于 b"
elif (( $a > $b ))
then
echo "a 大于 b"
elif (( $a < $b ))
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
输出结果:
if else 语句经常与 test 命令结合使用,如下所示:
实例
num1=$[2*3]
num2=$[1+5]
if test $[num1] -eq $[num2]
then
echo '两个数字相等!'
else
echo '两个数字不相等!'
fi
输出结果: