【发布时间】:2019-04-15 18:13:46
【问题描述】:
以下行在 alpine docker 容器中运行时失败:
toDelete=( $(curl --silent $url/_cat/indices\?format=json | jq -r '.[].index | select(startswith('\".kibana\"'))') )
出现以下错误信息:
run.sh: line 1: syntax error: unexpected "("
当我在我的 Mac 上的终端中运行命令时,一切正常。添加括号以便结果(变量 toDelete)被解释为数组,并且可以使用 for 循环进行循环,如下所示:
for index in "${toDelete[@]}"; do
curl -X DELETE $url/$index
done
感谢任何有关如何解决此问题的帮助!
【问题讨论】:
-
解释器是bash还是sh?
-
好问题,我将脚本作为 Docker ENTRYPOINT 使用 ENTRYPOINT ["/bin/sh", "run.sh"] 启动,因此它会生成 sh run.sh。此外,解释器似乎是灰烬(没有“B”),这就是括号不起作用的原因。
-
ls -l /bin/sh显示什么?指向什么shell的符号链接?此外,您似乎想设置一个数组变量。是吗? -
@user2074945 我相信它现在正在工作。请接受答案,以便问题得到解决