【发布时间】:2018-03-13 19:00:08
【问题描述】:
我有一个名为wait_script.sh 的文件,其内容如下
#!/bin/bash
until $(curl --output /dev/null --silent --head --fail http://localhost:4001);do
printf '.'
sleep 5
done
我可以运行它:
./wait_script.sh
它按预期工作
我可以运行同样的东西:
until $(curl --output /dev/null --silent --head --fail http://localhost:4001);do;printf '.';sleep 5;done
但是当我尝试在 bash -c 内运行它时,我收到以下错误:
bash -c "until $(curl --output /dev/null --silent --head --fail http://localhost:4001);do;printf '.';sleep 5;done"
bash: -c: line 0: syntax error near unexpected token `;'
bash: -c: line 0: `until ;do;printf '.';sleep 5;done'
为什么会发生此错误,如何在 bash -c 中运行命令?
【问题讨论】:
-
do关键字后面不能有分号;它实际上是一个分号。请参阅 shellcheck.net。 -
您可能不想将 -c 命令放在双引号中,因为这将只运行一次 curl 而 不会 重复运行。修复语法错误后,尝试使用单引号。
-
我仍然有同样的错误
bash -c "until $(curl --output /dev/null --silent --head --fail http://localhost:4001);do printf '.';sleep 5;done" -
我已经成为X Y problem的受害者,这就是我真正想问的:stackoverflow.com/questions/49264444/…
标签: bash curl syntax syntax-error