#!/bin/bash +x # NOTA: non dovrebbe mai succedere che il parametro sia errato # visto che remind.sh viene schedulato dall'altro script via cron test -f "$1" || { echo specificare il file delle scadenze come parametro exit 1 } FILEALLARMI="$1" # cron garantisce che remind.sh sia eseguito esattamente allo scadere # di ogni minuto, quindi il ciclo e tutte le precauzioni annesse non # servono più #NOW=0 #while sleep 20 ; do # [[ $(date +%M) -eq $NOW ]] && continue # NOW=$(date +%M) # # nota: i timestamp originali hanno la granularità del minuto, # # ma il tempo corrente considera i secondi, devo troncarli # # trick, ma si può fare in altri modi: la divisione per 60 restituisce un intero... CURRENTMINUTE=$(( $(date +%s) / 60 * 60)) # # nota: ci possono essere zero, una o più righe col timestamp corrente # # grep | while è il modo più semplice di gestirle, un'iterazione per ogni riga # # incluso il caso di zero iterazioni nei minuti per cui non ci sono corrispondenze egrep "^$CURRENTMINUTE" "$FILEALLARMI" | while read TIMESTAMP DATA ORA DESCRIZIONE ; do echo "$DESCRIZIONE scade il $DATA alle $ORA" done >> ~/promemoria #done