我有这个基本命令:
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 有缺陷,因为没有远程主机名。我假设这是因为它是一个占位符示例。)
在所有情况下,您都应该意识到您隐含地信任远程系统不会向您发送恶意脚本。您也相信他们的安全吗?