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

时间:2012-01-23 08:21:24

标签: bash

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

我找到this,但所有解决方案似乎都不必要地复杂化了。

对于这个对初学者有意义的简单问题,有什么简单的解决方案?

3 个答案:

答案 0 :(得分:88)

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

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

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

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

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

答案 1 :(得分:18)

接受的解决方案通过测试给定的参数计数来检查参数是否已设置。如果这不是所需的检查,也就是说,如果您要检查是否已设置特定参数,则以下操作将执行此操作:

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

答案 2 :(得分:12)

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