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

How to check that a parameter was supplied to a bash script

本问题已经有最佳答案,请猛点这里访问。

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

我发现了这一点,但所有的解决方案似乎都不必要地复杂。

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


使用与提供的参数数量相等的$#,例如:

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

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

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

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


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

1
2
3
4
5
6
for i in"$@" ; do
    if [[ $i =="check parameter" ]] ; then
        echo"Is set!"
        break
    fi
done

或者更紧凑地说:

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


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