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

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

我发现这一点 ,但所有的解决scheme似乎是不必要的复杂。

对于初学者来说这个简单的问题有什么意义?

使用$# ,它等于提供的参数数量,例如:

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

谨慎的话:请注意,在一个函数内,这将等于提供给函数而不是脚本的参数的个数。

编辑:正如SiegeX在bash中指出的,你也可以在(( ... ))使用算术expression式。 这可以像这样使用:

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

接受的解决scheme检查是否通过testing设置的参数与给定参数的数量相符。 如果这不是所需的检查,也就是说,如果您想检查是否设置了特定参数 ,则可以执行以下操作:

 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 
 if (( "$#" != 1 )) then echo "Usage Info:…" exit 1 fi