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