检查在bash脚本中至less有两个参数

我正在尝试编写一个模仿cp的脚本,其中有源和目标input。 我如何计算在命令行上给出的参数数目

例如

./myscript src dest

检查至less有2件事情被给出。

Solutions Collecting From Web of "检查在bash脚本中至less有两个参数"

使用$#特殊变量。 它的值是参数的数量。 所以,如果你有一个脚本,只包含:

 echo $# 

并像这样执行它:

 thatscript foo bar baz quux 

它会打印4。

在你的情况下,你可能想要做这样的事情:

 if [ $# -ne 2 ]; then # TODO: print usage exit 1 fi 

从这个问题的要求来看,争论应该包含“至少两件事”,我认为可能是更准确的检查:

 if (( $# < 2 )); then # TODO: print usage exit 1 fi 

使用算术扩展 (( ))可以防止任何不等于2的值到达第一个exit 1

如果使用if [ $# -ne 2 ]; 它将触发除2以外的任何数量的参数的条件。