【问题标题】:Shell Script failing on alpine linux while working in mac terminal在 Mac 终端中工作时,Shell 脚本在 alpine linux 上失败
【发布时间】: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 我相信它现在正在工作。请接受答案,以便问题得到解决

标签: bash shell alpine


【解决方案1】:

记下答案。

问题出在解释器上。

进行以下更改后工作。

["/bin/ash", "run.sh"]

通过的是

["/bin/sh", "run.sh"]

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 2013-10-03
    • 2022-01-27
    • 2013-10-05
    • 2012-11-05
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    相关资源
    最近更新 更多