所以我试图弄清楚这个bash脚本是什么,它在我的本地机器(MacOS)上工作得很好:
#!/bin/bash
echo 'Fetching keys.....'
creds=$(credstash getall)
declare -a arrayKeys=($(echo $creds | jq --raw-output '[to_entries[] | .key]' | tr ',' '\n'))
echo 'Setting environment variables.'
for ((i=1; i<(${#arrayKeys[*]} -1); i++))
do
key=$( printf '%s:' "${arrayKeys[i]}" )
key=${key%:}
filter=".${arrayKeys[i]}"
value=$(jq --raw-output "$filter" <<< "$creds")
eval "export ${arrayKeys[i]}=${value}"
done
当我跑步时,我得到:
line 15: syntax error near unexpected token `newline'
line 15: `done'
这个文件是在MacOS上创建的,推送到Github并由CircleCI拉到Ubuntu docker镜像中,我试过的东西:
在执行之前使用TR:
tr -d '\015' < creds.sh > creds2.sh
cat -v creds.sh // to check for dodgy characters
我仍然遇到同样的错误,我昏暗吗?
编辑我也在Dockerfile的顶部有这个,不确定它是否相关,我看不出它有影响但我想分享:
# Replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh