【问题标题】:Can someone explain/give a breakdown of this shell parameter substitution? ${cfg+-f "$cfg"}有人可以解释/给出这个shell参数替换的细分吗? ${cfg+-f "$cfg"}
【发布时间】:2013-09-22 12:00:14
【问题描述】:

我正在寻找一个好的解决方法来保持我的.tmux.conf 文件在系统之间保持一致(我有 OS X 和 Ubuntu,它们有不同的复制/粘贴支持技术)当我遇到这个提供解决方案的评论时: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

但在我在评论中使用代码 sn-p 之前,我想完全了解它在做什么。特别是,我不太明白最后一行,bash man page for parameter substitution 并没有太大帮助。

这是行:

exec /path/to/actual/tmux ${cfg+-f "$cfg"} "$@"

具体来说,${cfg+-f "$cfg"} 部分是什么意思?

【问题讨论】:

    标签: bash shell tmux variable-substitution


    【解决方案1】:

    表示如果设置了变量cfg,它将随着-f "$cfg"的组合值展开。

    例子:

    > a=1234
    > echo "${a+b}" # => variable is set
    b
    > a=
    > echo "${a+b}" # => empty but still set would still expand it.
    b
    > unset a
    > echo "${a+b}" # => it's now unset so no output
    (nothing)
    

    另一个带有额外变量的:

    > a=1234
    > x=y
    > echo "${a+b "$x"}"
    b y
    > echo "${a+"$a $x"}"
    1234 y
    

    【讨论】:

      【解决方案2】:

      如果没有设置,则表示跳过该参数。实际上导致以下结果之一:

      exec /path/to/actual/tmux -f "/some/cfg" "$@"
      exec /path/to/actual/tmux "$@"
      

      所以如果设置了$cfg,则使用-f "$cfg",否则什么都不用,所以tmux 不会抱怨-f 缺少参数。

      【讨论】:

        猜你喜欢
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 2012-04-19
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多