如何检查参数是否提供给 bash 脚本

我只想检查 bash 脚本中是否提供了一个参数。

我发现 这个,但所有的解决方案似乎是不必要的复杂。

对于一个初学者来说,这个简单问题的简单解决方案是什么?

92407 次浏览

使用等于所提供参数数目的 $#,例如:

if [ "$#" -ne 1 ]
then
echo "Usage: ..."
exit 1
fi

注意: 注意,在函数内部,这将等于提供给函数而不是脚本的参数数量。

编辑: 正如 bash 中的 SiegeX所指出的,您也可以在 (( ... ))中使用算术表达式。可以这样使用:

if (( $# != 1 ))
then
echo "Usage: ..."
exit 1
fi
if (( "$#" != 1 ))
then
echo "Usage Info:…"
exit 1
fi

接受的解决方案通过对给定的参数计数进行测试来检查 参数已经设置好了是否正确。如果这不是想要的检查,也就是说,如果你想检查是否 设置了一个特定的参数,以下将做到这一点:

for i in "$@" ; do
if [[ $i == "check parameter" ]] ; then
echo "Is set!"
break
fi
done

或者,更简洁地说:

for i in "$@" ; do [[ $i == "check argument" ]] && echo "Is set!" && break ; done