在Bash 4.2.47(1)-发行版中,当我尝试对来自HERE-dcoument的格式化文本进行分类时,如下所示:
cat <(fmt --width=10 <<FOOBAR
(I want the surrounding parentheses to be part of the HERE-document)
(Even the preceding unbalanced parenthesis should be part of it.
FOOBAR
) # I want this paranthesis to end the process substitution.
我收到以下错误:
bash: bad substitution: no closing `)' in <(fmt --width=10 <<FOOBAR
(I want the surrounding parentheses to be part of the HERE-document)
(Even the preceding unbalanced parenthesis should be part of it.
FOOBAR
)
我也不想引用HERE文档,即write <'FOOBAR'
,因为我仍然想在其中替换变量。
我必须承认这是一个人为的例子。我的实际需求比这更复杂。
—
Tim Friske 2014年
有趣的是,当您替换它时
—
拉斐尔·阿伦斯
(Even
,"(Even"
它可以工作。相同\(Even
。看起来像一个解析错误。Bash仍在寻找括号的上下文中,同时在阅读此文档的上下文中,两个上下文相互矛盾。
bash
顺便说一句,此问题已在4.3中修复。
cat
电话吗?为什么不打电话fmt
呢?