我只想检查 bash 脚本中是否提供了一个参数。
我发现 这个,但所有的解决方案似乎是不必要的复杂。
对于一个初学者来说,这个简单问题的简单解决方案是什么?
使用等于所提供参数数目的 $#,例如:
$#
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