我有一个bash脚本,根据用户的参数调用各种实例的IP。现在,如果他们的查询与脚本不匹配,则根本不返回任何内容,甚至不返回null
。我喜欢结合某种错误处理来提示用户重试。这可以是从内置AWS功能到自定义错误消息的任何内容,我不挑剔。
我的脚本如下;
#!/usr/bin/env bash
set -e
#READ ARGUMENTS PASSED IN - expects stack name
if [ "$#" != 1 ]; then
echo "Illegal number of parameters. Expecting 1: stack name"
exit 1
fi
name=$1
aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text
如果成功,我会得到像
这样的东西00.00.00.000
name-of-instance
但如果失败我什么也得不到。
如果aws describe-instances没有返回匹配项,是否有提示用户或以其他方式显示错误消息的方法?
答案 0 :(得分:2)
首先将输出捕获到变量中:
output=$(aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text)
然后检查output
的内容。如果有什么东西只是回应它到屏幕上。如果没有,请显示您的自定义错误消息。
答案 1 :(得分:2)
output=`aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text`
if [ -n "$output" ]; then
echo "$output"
else
echo "No such instance $name exists"
fi