CodeBuild的buildspec.yml条件语句报错[[: not found]]如何解决?
AWS CodeBuild buildspec.yml 条件语句错误修复
问题场景
在AWS CodeBuild的buildspec.yml中添加条件执行逻辑时,使用了以下代码:
SNYK_CODE_TEST=true if [ "$SNYK_CODE_TEST" == "true" ] ; then yarn run snyk-code-test ; fi
执行时报错:
/codebuild/output/tmp/script.sh: 4: [[: not found
正确写法及原因
AWS CodeBuild默认使用Dash shell(而非Bash),Dash仅支持POSIX标准的shell语法,不兼容Bash的扩展特性:
- 不能用
[[,必须用POSIX标准的[ - 相等比较不能用
==,必须用=
标准写法
SNYK_CODE_TEST=true if [ "$SNYK_CODE_TEST" = "true" ]; then yarn run snyk-code-test; fi
更简洁的写法
如果逻辑简单,也可以用短路运算符简化:
SNYK_CODE_TEST=true [ "$SNYK_CODE_TEST" = "true" ] && yarn run snyk-code-test
内容的提问来源于stack exchange,提问作者msaavedra91
相关产品推荐
相关产品推荐

