[英]assign output of memcache command to a variable in shell/bash script
[英]How to assign a command contains ` ` to a variable in bash shell script?
我想编写一个 bash 脚本,用于在 aws 中从目标组自动注册和注销目标。
脚本是这样的:
#!/bin/bash
target_group_name=$1
instance_Id=$2
target_group_arn="$(aws elbv2 describe-target-groups --query 'TargetGroups[?contains(TargetGroupName, `$1`)].TargetGroupArn' --output text)"
echo -n "Enter the option you want to do (enter 1 for register and enter 2 for deregister): "
read OPTION
case $OPTION in
1)
if register_output=$(aws elbv2 register-targets --target-group-arn '$target_group_arn' --targets Id="$2");
then
echo "Registering instance into target group. Please wait for 5 minutes registration progress finished"
else
echo "!!!! ERROR !!!!"
fi
;;
2)
if deregister_output=$(aws elbv2 deregister-targets --target-group-arn '$target_group_arn' --targets Id="$2");
then
echo "Deregistering instance into target group. Please wait for 5 minutes registration progress finished"
else
echo "!!!! ERROR !!!!"
fi
;;
*)
echo "unknown option"
;;
esac
但是,当我运行脚本时,没有找到 arn。
我尝试打印出$1
(S1 在左操作数符号内)。 但是,似乎bash脚本不理解,它什么也没打印出来。
你能帮我弄清楚我的脚本有什么问题吗? 或者我如何重现我的查询以获取目标组的 arn 以便我可以将它传递给我的命令?
非常感谢!
您的目标组 ARN 解析器如下所示:
aws elbv2 describe-target-groups \
--query 'TargetGroups[?contains(TargetGroupName, `$1`)].TargetGroupArn' \
--output text
我不确定您是否在$1
变量周围使用了反引号,但是:
"
)。我从未见过这样使用反引号。$1
变量不会解析 - AWS CLI 将完全按照所写的方式获取查询,甚至不会执行反引号,如果您在开始时使用echo
运行该命令,您会看到.你可能想写这个:
aws elbv2 describe-target-groups \
--query "TargetGroups[?contains(TargetGroupName, \"$1\")].TargetGroupArn" \
--output text
因为我刚刚找到了我的问题的答案,所以我会在这里为感兴趣的人发布我的答案并关闭我的帖子。
非常感谢你们帮助我! :D
#!/bin/bash
profile=$1
target_group_name=$1
instance_id=$2
target_group_arn="$(aws elbv2 describe-target-groups --query 'TargetGroups[].[TargetGroupArn]' --names "$2" --profile "$1" --output text)"
echo -n "Enter the option you want to do (enter 1 for register and enter 2 for deregister): "
read OPTION
case $OPTION in
1)
if register_output=$(aws elbv2 register-targets --target-group-arn "$target_group_arn" --targets Id="$2");
then
echo "Registering instance into target group. Please wait for 5 minutes registration progress finished"
else
echo "!!!! ERROR !!!!"
fi
;;
2)
if deregister_output=$(aws elbv2 deregister-targets --target-group-arn "$target_group_arn" --targets Id="$2");
then
echo "Deregistering instance into target group. Please wait for 5 minutes registration progress finished"
else
echo "!!!! ERROR !!!!"
fi
;;
*)
echo "unknown option"
;;
esac
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.