![如何在 posix shell 中使用 bash 风格的 $() 语法?](https://linux22.com/image/203016/%E5%A6%82%E4%BD%95%E5%9C%A8%20posix%20shell%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20bash%20%E9%A3%8E%E6%A0%BC%E7%9A%84%20%24()%20%E8%AF%AD%E6%B3%95%EF%BC%9F.png)
我有这个基本命令:
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 有缺陷,因为没有远程主机名。我假设这是因为它是一个占位符示例。)
在所有情况下,您都应该意识到您隐含地信任远程系统不会向您发送恶意脚本。您也相信他们的安全吗?