我正在尝试编写一个模仿cp的脚本,其中有源和目标输入。如何计算命令行中给出的参数数量
例如
./ myscript src dest
检查至少有两件事。
答案 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之外的任何数量的参数的条件。