Bash 4:寻找匹配的“)”时出现意外的 EOF

Bash 4:寻找匹配的“)”时出现意外的 EOF

我的脚本的这个非常简化的版本

#!/usr/bin/env bash
example="$(bash -rs <<'BASH' -- 'This has been executed in restricted shell'
  echo "$1"
BASH
)"
echo "$example"

在 bash 版本 5.1.4 的系统上执行没有问题。但是,在另一个 bash 版本 4.0.44 的系统上,我收到错误

line 2: unexpected EOF while looking for matching `)'

如果我将脚本更改为

#!/usr/bin/env bash
example="$(bash -rs <<'BASH'
  echo 'This has been executed in restricted shell'
BASH
)"
echo "$example"

或者

#!/usr/bin/env bash
bash -rs <<'BASH' -- 'This has been executed in restricted shell'
  echo "$1"
BASH

它也适用于 bash 版本 4 的系统。

有谁知道可能是什么原因吗?

答案1

嗯,这是一个错误。具体是哪一个,这是个问题。

可能是这个,也许:

j。修复了导致 shell 无法识别命令替换内的此处文档结束分隔符的错误。

但这只是一个猜测。

bash bug 邮件列表上的旧报告:https://lists.gnu.org/archive/html/bug-bash/2010-07/msg00052.html

相关内容