这就是我想要运行的脚本
bRules=(`aws s3api get-bucket-lifecycle-configuration --bucket x | jq '.Rules[]'.ID`)
echo "*** Total number of LifecycleRules **** ${#bRules[@]}"
for rule in "${bRules[@]}"
do
echo "Bucket: x, Rule: $rule"
done实际输出
*** Total number of LifecycleRules **** 6
Bucket: x, Rule: This
Bucket: x, Rule: is
Bucket: x, Rule: Rule-1
Bucket: x, Rule: This
Bucket: x, Rule: is
Bucket: x, Rule: Rule-2预期产出:
*** Total number of LifecycleRules **** 2
Bucket: x, Rule: This is Rule-1
Bucket: x, Rule: This is Rule-2在我的代码片段中需要更改什么才能获得所需的输出?我有点不知所措来解决这个问题。
发布于 2022-01-06 07:14:21
不要依赖命令替换和分词。使用readarray (或者如果您愿意的话使用mapfile )和进程替换。
您的循环也可以简化为一个printf。
readarray -t bRules < <(aws s3api get-bucket-lifecycle-configuration --bucket x | jq '.Rules[]'.ID)
echo "*** Total number of LifecycleRules **** ${#bRules[@]}"
printf 'Bucket: x, Rule: %s\n' "${bRules[@]}"读巴什手册。
https://stackoverflow.com/questions/70602858
复制相似问题