if 語句
if [[ $1 -eq 1 ]]; then
echo "1 was passed in the first parameter"
elif [[ $1 -gt 2 ]]; then
echo "2 was not passed in the first parameter"
else
echo "The first parameter was not 1 and is not more than 2."
fi
關閉 fi
是必要的,但是 elif
和/或 else
子句可以省略。
then
之前的分號是在一行上組合兩個命令的標準語法; 只有當 then
移動到下一行時才能省略它們。
重要的是要理解括號 [[
不是語法的一部分,而是被視為命令; 它是正在測試的此命令的退出程式碼。因此,你必須始終在括號周圍包含空格。
這也意味著可以測試任何命令的結果。如果命令的退出程式碼為零,則該語句被視為 true。
if grep "foo" bar.txt; then
echo "foo was found"
else
echo "foo was not found"
fi
數學表示式放在雙括號內時,也以相同的方式返回 0 或 1,也可以測試:
if (( $1 + 5 > 91 )); then
echo "$1 is greater than 86"
fi
你也可能會遇到帶有單括號的 if
語句。這些在 POSIX 標準中定義,並保證在包括 Bash 在內的所有符合 POSIX 的 shell 中都有效。語法與 Bash 中的語法非常相似:
if [ "$1" -eq 1 ]; then
echo "1 was passed in the first parameter"
elif [ "$1" -gt 2 ]; then
echo "2 was not passed in the first parameter"
else
echo "The first parameter was not 1 and is not more than 2."
fi