【问题标题】:Defining flag parameters in bash在 bash 中定义标志参数
【发布时间】:2020-06-15 11:10:36
【问题描述】:

我编写了 bash 脚本,其中包含了一些日志记录,以查看执行的每个步骤中发生了什么。

现在,我可以将这些日志拆分为调试信息和用户信息(某事已完成等)。所以我想要一些标志参数,比如--verbose,我在其他一些 bash 函数中看到它来启用完整的日志记录和使用就像:

some_function --verbose

some_function -v

我称之为标志参数,不知道什么是正确的名称,因此我找不到任何有用的东西。

如何为bash脚本定义这些参数?

【问题讨论】:

  • 看看BashFAQ35
  • @kvantour 谢谢,我去看看

标签: linux bash shell centos


【解决方案1】:

目前,我使用了解决方法并将其作为正常的位置参数(如$n)。确切地说,我有四个参数的列表,所以我收集这个标志是这样的:

verbose=$4
if [ ! "$verbose" == "--verbose" ]; then
  verbose=""
fi

因此,如果参数与标志不匹配,则将其留空,如果要使用它,只需将其与空字符串进行比较。

不过对我来说有一个很大的缺点:它必须在参数列表中排在第 4 位。

【讨论】:

    【解决方案2】:

    这种情况更适合这种情况

    while [[ "$@" ]]; do
        case "$1" in
            -v|--verbose) verbose="true";;
        esac
        shift
    done
    

    在函数中也可以这样做,但请注意,在这种情况下,它将处理传递给函数 some_function -v 的参数。

    some_function () {
        while [[ "$@" ]]; do
            case "$1" in
                -v|--verbose) verbose="true";;
            esac
            shift
        done
    }
    

    然后你可以在脚本的某个地方检查是否设置了verbose

    [[ "$verbose" ]] && echo "verbose mode" || echo "silent mode"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 2019-10-13
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多