はじめに
buildspec.yamlにfor文を記述しCodeBuildで実行したところ、
エラーになって滅茶苦茶ハマったので忘れない為に。
想定読者
CodeBuildでfor文使いたい人
CodeBuildでfor文使ったらエラーになった人
書き方
例として、下記の処理を行うコードを書きます。
- lsコマンドの結果を変数に入れる
- 変数をfor文で処理する
commands:
- RESULT=`ls`
- for v in "${RESULT[@]}"; do
echo $v;
done
ハマっていた時のコード
ハマってエラーが出ていた時のコードは以下でした。
commands:
- RESULT=`ls`
- for v in "${RESULT[@]}"
- do
- echo $v
- done
全行にハイフンを書いていました。
この場合、下記の様なエラーが出ます。
for文やif文など、複数行のコードブロックを書く場合は、
ブロックの先頭にのみハイフンをつけて1行として見なされなければならないっぽい。
(CODEBUILD_LAST_EXITって何?)
おわりに
シェル自体の書き方が悪いのか?と思って色々無駄に検証してしまった。
解決の糸口として、exit statusも出ていたけどそもそもexit stautsの対応表が見つからなかった。どうすればええねん。