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