如何在 posix shell 中使用 bash 风格的 $() 语法?

如何在 posix shell 中使用 bash 风格的 $() 语法?

我有这个基本命令: SOME_VAR='blabhablhaba' bash -c "$(curl -L https://run_script.sh)"

如何使用 posix shell 执行此操作?这失败了: SOME_VAR='blabhablhaba' sh -c "$(curl -L https://run_script.sh)"

sh: syntax error: unexpected "("

答案1

要么您使用了错误类型的引号,要么您正在下载的 shell 脚本是脚本bash而不是 POSIXsh脚本。

你现在所拥有的是curl执行的当前外壳,并将结果粘贴到sh -c "..."准备执行的表达式中sh

试试这个,它将整个下载和执行推迟到sh

SOME_VAR='blabhablhaba' sh -c '$(curl -L https://run_script.sh)'

(您作为示例包含的 URL 有缺陷,因为没有远程主机名。我假设这是因为它是一个占位符示例。)

在所有情况下,您都应该意识到您隐含地信任远程系统不会向您发送恶意脚本。您也相信他们的安全吗?

相关内容