在 AWS CLI 描述实例的 null return 上显示错误消息
Show error message on null return for AWS CLI describe-instances
我有一个 bash 脚本根据用户的参数调用各种实例的 IP。现在,如果他们的查询与脚本不匹配,那么 return 根本就没有任何内容,甚至 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=
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 returns 没有匹配项,是否有提示用户或以其他方式显示错误消息的方法?
首先像这样将输出捕获到一个变量中:
output=$(aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text)
然后检查output
的内容。如果有什么东西就把它回显到屏幕上。如果没有,请显示您的自定义错误消息。
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
我有一个 bash 脚本根据用户的参数调用各种实例的 IP。现在,如果他们的查询与脚本不匹配,那么 return 根本就没有任何内容,甚至 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=
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 returns 没有匹配项,是否有提示用户或以其他方式显示错误消息的方法?
首先像这样将输出捕获到一个变量中:
output=$(aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text)
然后检查output
的内容。如果有什么东西就把它回显到屏幕上。如果没有,请显示您的自定义错误消息。
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