【发布时间】:2021-04-17 23:18:39
【问题描述】:
我正在尝试编写一个模仿 cp 的脚本,其中有源和目标输入。如何计算命令行中给出的参数个数
例如
./myscript src dest
检查是否提供了至少 2 件东西。
【问题讨论】:
我正在尝试编写一个模仿 cp 的脚本,其中有源和目标输入。如何计算命令行中给出的参数个数
例如
./myscript src dest
检查是否提供了至少 2 件东西。
【问题讨论】:
使用$# 特殊变量。它的值是参数的数量。因此,如果您的脚本仅包含:
echo $#
并像这样执行它:
thatscript foo bar baz quux
它会打印 4。
在您的情况下,您可能想要执行以下操作:
if [ $# -lt 2 ]; then
# TODO: print usage
exit 1
fi
【讨论】:
~/.bashrc 中,使用return 而不是exit 1
按照参数应包含“至少 2 件事”的问题的要求,我认为检查可能更准确:
if (( $# < 2 )); then
# TODO: print usage
exit 1
fi
使用arithmetic expansion (( )) 将防止它针对任何不等于2 的值命中exit 1。
如果您使用if [ $# -ne 2 ];,它将触发除 2 之外的任意数量参数的条件。
编辑:似乎已接受的答案已更新为包含等效(并且更便携?)的示例。
【讨论】: