如何将包含多个flag的字符串赋值给变量以便在命令中复用
gcloud命令公共flag去重最简实现
最简单的实现方式是使用Bash数组存储公共flag参数,完全避免字符串拆分异常、变量替换失效的问题,实现代码如下:
# 定义公共flag数组,每个元素对应一个独立参数,自动完成变量替换 FLAGS=( --push-endpoint="$SUBSCRIPTION_ENDPOINT" --ack-deadline="$ACK_DEADLINE" --max-delivery-attempts="$MAX_DELIVERY_ATTEMPTS" --dead-letter-topic="$DEADLETTER_TOPIC" --min-retry-delay="$MIN_RETRY" --max-retry-delay="$MAX_RETRY" ) if [ 你的判断条件 ]; then # 创建命令额外加--topic参数即可 gcloud pubsub subscriptions create mysub \ --topic mytopic \ "${FLAGS[@]}" else # 更新命令直接使用公共flag数组 gcloud pubsub subscriptions update mysub \ "${FLAGS[@]}" fi
注意事项:
- 数组展开必须用
"${FLAGS[@]}"格式,外层的双引号不能丢,保证参数里有空格、特殊字符时也能正常传递 - 脚本开头需要指定
#!/bin/bash(Bash环境),POSIX标准的sh不支持数组语法 - 你原代码中的update命令行参数
-push-endpoint缺了一个横杠,记得修正为--push-endpoint
内容的提问来源于stack exchange,提问作者Joshua Fox
相关产品推荐
相关产品推荐

