我的脚本的这个非常简化的版本
#!/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