- if (( ! ${#files[@]} )); then
- continue
- fi
- snaps=($(ls -1avdr "${files[@]}" 2>/dev/null |head -n1 || : ))
- now=$EPOCHSECONDS
- maxtime=0
- for s in ${snaps[@]}; do
- file=${s##*/}
- t=$(date -d $(sed -r 's/(.{4})(..)(.{5})(..)(.*)/\1-\2-\3:\4:\5/' <<<${file#$vol.}) +%s)
- if (( t > maxtime )); then
- maxtime=$t
- fi
- done
- snapshotmsg=
- last_snap_age=$(( now - maxtime ))
- last_snap_hours=$(( last_snap_age / 60 / 60 ))
- if (( last_snap_age > old_snap_limit )); then
- chars+=(OLD-SNAP-${last_snap_hours}h)
- snapshotmsg="/$vol snapshot older than 4 hours"
- if [[ $MAIL_HOST == "$HOSTNAME" ]]; then
- p "$snapshotmsg" | lo -1 old-snapshot
+ if (( ${#files[@]} )); then
+ # shellcheck disable=SC2012 # using ls version sort. not sure this is needed.
+ snaps=("$(ls -1avdr "${files[@]}" 2>/dev/null |head -n1 || : )")
+ now=$EPOCHSECONDS
+ maxtime=0
+ for s in ${snaps[@]}; do
+ file=${s##*/}
+ t=$(date -d "$(sed -r 's/(.{4})(..)(.{5})(..)(.*)/\1-\2-\3:\4:\5/' <<<${file#"$vol."})" +%s)
+ if (( t > maxtime )); then
+ maxtime=$t
+ fi
+ done
+ snapshotmsg=
+ last_snap_age=$(( now - maxtime ))
+ last_snap_hours=$(( last_snap_age / 60 / 60 ))
+ if (( last_snap_age > old_snap_limit )); then
+ chars+=(OLD-SNAP-${last_snap_hours}h)
+ snapshotmsg="/$vol snapshot older than 4 hours"
+ if [[ $MAIL_HOST == "$HOSTNAME" ]]; then
+ p "$snapshotmsg" | lo -1 old-snapshot
+ fi
+ # not bothering to get info on all volumes if we find an old one.