#!/bin/bash +x

test -f "$1" || {
	echo specificare il file delle scadenze come parametro
	exit 1
}

FILEALLARMI="$1"
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