如何在Elastic Beanstalk的.ebextensions中检测软件包未安装执行命令
解决方案
你可以直接在test参数的命令前加Shell内置的取反运算符!实现需求,完整的.ebextensions配置写法如下:
commands: install_package: test: "! rpm -qa | grep -q example_package" command: yum install -y example_package.rpm
逻辑说明
- Elastic Beanstalk的
commands模块规则:只有test对应的命令执行后返回状态码为0(执行成功)时,才会运行下方的command指令 - 这里替换
grep -c为grep -q(静默匹配模式),不需要输出匹配计数,只判断是否存在匹配结果,执行效率更高:匹配到目标包时返回状态码0,无匹配时返回1 - 开头的
!会反转命令的返回状态码:- 已安装目标包时:
grep返回0→ 取反后返回非0 →test不通过,跳过安装 - 未安装目标包时:
grep返回1→ 取反后返回0→test通过,执行安装命令
- 已安装目标包时:
内容的提问来源于stack exchange,提问作者tklodd
相关产品推荐
相关产品推荐

