2

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

但在我使用评论中的代码片段之前,我想完全了解它在做什么。特别是最后一行我不太明白,参数替换的 bash 手册页并没有太大帮助。

这是行:

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

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

4

2 回答 2

4

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

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

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

于 2013-09-17T21:28:17.583 回答
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
于 2013-09-17T21:28:11.113 回答