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