【问题标题】:Check that there are at least two arguments given in a bash script检查 bash 脚本中是否至少给出了两个参数
【发布时间】:2021-04-17 23:18:39
【问题描述】:

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

例如

./myscript src dest

检查是否提供了至少 2 件东西。

【问题讨论】:

    标签: linux bash


    【解决方案1】:

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

    echo $#
    

    并像这样执行它:

    thatscript foo bar baz quux
    

    它会打印 4。

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

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

    【讨论】:

    • 如果你把它放在你的~/.bashrc 中,使用return 而不是exit 1
    【解决方案2】:

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

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

    使用arithmetic expansion (( )) 将防止它针对任何不等于2 的值命中exit 1。

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

    编辑:似乎已接受的答案已更新为包含等效(并且更便携?)的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 2022-01-11
      • 2012-02-16
      • 2021-05-14
      • 1970-01-01
      • 2020-05-22
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多