【问题标题】:How do I pass a command parameter in a variable holding the command?如何在保存命令的变量中传递命令参数?
【发布时间】:2019-12-19 02:59:57
【问题描述】:

我想产生与此相同的输出:

bash utilities.bash "is_net_connected"

但如果命令和文件存储在这样的变量中,我不知道如何传递“is_net_connected”:

T=$(bash utilities.bash)

我已经尝试过这些,但它似乎不起作用。它没有在utilities.bash 中接收${1}

$(T) "is_net_connected"
$(T "is_net_connected")

这不是最好的导入方式,但我会尽量避免在我的主脚本中添加功能块。

【问题讨论】:

    标签: bash variables command-line-arguments


    【解决方案1】:

    T=$(bash utilities.bash) 不保存命令;它运行命令并保存它的输出。你想定义一个函数。

    T () {
        bash utilities.bash "$@"
    }
    
    # Or on one line,
    # T () { bash utilities.bash "$@"; }
    

    现在

    T "is_net_connected"
    

    将使用传递给T 的任何参数运行bash utilities.bash。在这种情况下,别名的工作方式相同:alias T='bash utilities.bash'。但是,对T 应该做的任何更改都可能需要从别名切换到函数,因此您不妨使用该函数来启动。 (另外,您必须在脚本中显式启用别名扩展。)


    你可能很想使用

    T="bash utilities.bash"
    
    $T is_net_connected
    

    不要这样做。不带引号的参数扩展是不好的做法,仅在特定情况下有效,如果您尝试在更复杂的情况下使用它们,您最终会被咬命令。使用函数;这就是语言支持它们的原因。

    【讨论】:

      猜你喜欢
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2012-03-02
      • 2010-09-11
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多