bash - 有人可以解释/给出这个 shell 参数替换的详细信息吗? ${cfg+-f "$cfg"}

标签 bash shell tmux variable-substitution

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

但是在我使用注释中的代码片段之前,我想完全理解它在做什么。特别是,我不太明白最后一行,以及 bash man page for parameter substitution没有多大帮助。

这是一行:

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

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

最佳答案

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

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

因此,如果设置了 $cfg,则使用 -f "$cfg",否则什么也不用,因此 tmux 不会提示 缺少参数 - f.

关于bash - 有人可以解释/给出这个 shell 参数替换的详细信息吗? ${cfg+-f "$cfg"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860158/

相关文章:

linux - bash 中的 Sed 正则表达式问题

linux - 关于 shell 和子 shell

java - 规范jvm : How to execute outside installation folder

vim - tmux + vim,当从 Windows ssh 到 Linux 机器时重新连接后剪贴板失败

go - 使用 Golang Exec 执行 Tmux

linux - 如果 4 个字符长,awk 可能只输出?

c++ - Cygwin 错误 : system not declared in this scope?

shell - autoconf:我应该始终使用 AS_IF 而不是 if 和 m4_if 吗?

linux - "kill 0"和 "kill -‍- -$$"有什么区别?

vim - 在两个编辑器之间的 tmux 中猛拉