检查bash脚本中是否至少提供了两个参数

时间:2011-11-03 01:58:44

标签: linux bash

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

例如

./ myscript src dest

检查至少有两件事。

2 个答案:

答案 0 :(得分:32)

使用$#特殊变量。它的值是参数的数量。因此,如果您的脚本只包含:

echo $#

并执行它:

thatscript foo bar baz quux

它会打印4。

在您的情况下,您可能想要执行以下操作:

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

答案 1 :(得分:19)

根据问题的要求,参数应包含“至少2件事”,我认为检查可能更准确:

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

使用arithmetic expansion (( ))可以防止exit 1点击任何不等于2的值。

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