理解Bash脚本变量与算术运算符:$((${2} - 1))中-1的作用
NUMBER_OF_IMAGES_TO_REMAIN=$((${2} - 1)) 中 -1 的作用 这里的 -1 是为了适配 jq 处理数组时的0起始索引规则,保证最终保留的镜像数量和用户输入的预期值完全匹配,具体逻辑如下:
- 脚本的第二个入参是用户指定的需要保留的最新镜像数量,比如示例命令中的
5,代表要保留最近推送的5个镜像,删除更早的历史镜像。 - 脚本调用
gcloud container images list-tags时加了--sort-by=~TIMESTAMP参数,返回的镜像列表是按照推送时间从新到旧倒序排列的,输出的JSON数组中:- 索引
0对应第1个(最新的)镜像 - 索引
1对应第2个镜像 - 以此类推,索引
n-1对应第n个镜像
- 索引
- 脚本需要取出要保留的最后一个镜像的推送时间作为删除阈值:如果用户要保留5个镜像,那符合要求的最后一个镜像就是数组中索引为
5-1=4的第5个镜像,取这个镜像的日期作为阈值,删除所有推送时间早于该阈值的镜像,最终剩下的就是索引0到4的5个最新镜像,完全符合用户预期。 - 如果这里没有加
-1,用户输入5时会取索引为5的第6个镜像的时间作为阈值,最终会保留6个镜像,和用户的预期不符。
内容的提问来源于stack exchange,提问作者user16402220
相关产品推荐
相关产品推荐

