2013-08-09T14:20:47.000Z という形式のいくつかの Amazon ec2 ボリューム スナップショットの UTC 作成時刻を含む配列があります。
配列の要素を互いに比較して、どれが最も古いスナップショットであるかを判断し、Bash 4 で削除する方法を見つけようとしています。
私が今持っている現在のコード:
#creates a count of all the snapshot volume-id's and deletes oldest snapshot if
#there are more than 5 snapshots of that volume
declare -A vol_id_count=( ["id_count"]="${snapshot_vols[@]}" )
check_num=5
for e in ${vol_id_count[@]}
do
if (( ++vol_id_count[$e] > $check_num ))
then
echo "first nested if works"
#compare UTC times to find oldest snapshot
#snapshot_time=${snapshot_times[0]}
#for f in ${snapshot_times[@]}
#do
# time= date --date="$snapshot_time" +%s
# snapshot_check=${snapshot_times[$f]}
# echo "check: "$snapshot_check
# check= date --date="$snapshot_check" +%s
# if [[ "$snapshot_time" -gt "$snapshot_check" ]]
# then
# snapshot_time=$snapsnapshot_check
# echo "time: "$snapshot_time
# fi
#done
#snapshot_index=${snapshot_times[$snapshot_time]}
#aws ec2 delete-snapshot --snapshot-id "${snapshot_ids[$snapshot_index]}"
fi
done
特定のボリュームのスナップショットが 5 つ以上あるかどうかを確認する最初の for ループと if ステートメントがありますが、UTC 文字列を比較する方法を理解しようとして頭を悩ませています。2 番目の連想配列でうまくいくでしょうか。