【发布时间】:2014-02-02 22:46:59
【问题描述】:
此命令成功
$ PS1='$(日期+%s)$' 1391380852 $但是,如果我添加一个换行符,它会失败
$ PS1='$(日期+%s)\n$' bash:命令替换:第 1 行:意外标记 `)' 附近的语法错误 bash:命令替换:第 1 行:`date +%s)'如果我使用反引号,它会起作用
$ PS1='`日期+%s`\n$' 1391381008 $但是backticks are discouraged。那么是什么导致了这个错误呢?
GNU bash,版本 4.2.45(6)-发布【问题讨论】:
-
它对我来说很好用。您使用的是什么 bash 版本?我安装了
GNU bash, version 4.2.45(2)-release。 -
即使使用 bash 3 和 KSH(除了带有 KSH 的
\n),它也对我有用。 -
4.2.45(6) 的任何特定供应商包,还是上游的库存?
-
很难想象哪个跟随右括号的字符导致该括号被视为被替换命令的文字部分,而不是命令替换的右标记.解析必须是复杂的,在流中向后跳转,或者奇怪的前瞻。
-
@Kaz,
))是与)不同的标记,因此一定量的前瞻是强制性的。但是,是的,这是一个有趣的问题——它依赖于平台,使它加倍如此。
标签: bash backticks ps1 command-substitution