【发布时间】:2020-12-31 00:06:10
【问题描述】:
我正在尝试创建一个 Bash 脚本来创建一个 AWS EC2 实例。
目标:提高我的 Bash 脚本技能
为了提高我的 bash 脚本编写技能,我想练习在我的脚本中创建 if 语句。 如上所示,我创建了 if 语句来检查变量 new_ami 是否为空,然后回显“未找到它”,但如果它不为空,它将回显“找到 AMI”。
这是我的脚本
ami=$(aws ec2 describe-images --owners self amazon --filters "Name=name, Values=amzn2-*.0-x86_64-gp2" "Name=state, Values=available" --profile XXXXXX --output json | jq '.Images | sort_by(.CreationDate) | last(.[]).ImageId')
new_ami=$(echo "${ami}" | sed 's/"//g')
echo $new_ami
if test -z "$new_ami"
then
echo "Found AMI"
else
echo "Did not find it"
fi
当我运行我的脚本时,这是结果,我得到了
ami-0ce1e3f77cd41957e
Did not find it
我有一个问题:
- 脚本回显变量 new_ami,这表明变量不为空,但 if 语句未能回显“找到 AMI”,而是回显“未找到”,这意味着变量 new_ami 为空。 这怎么可能发生? 为什么我的 if 语句会这样? 我如何解决它? 感谢您的所有帮助
【问题讨论】:
-
-z "$new_ami"如果变量的长度为零(即变量未定义或没有值),则计算结果为true;在then/else块之间切换你的echo命令,你应该很高兴
标签: bash amazon-web-services amazon-ec2