Evaluar la fecha a la hora programada del comando "at"

Evaluar la fecha a la hora programada del comando "at"

Utilizo un archivo de secuencia de comandos para ejecutar algunas tareas usando el comando AT, pero en el archivo de registro la fecha que se repite es la fecha en la que configuré el comando AT, no la fecha de ejecución.

¿Qué puedo hacer para mostrar la hora real de finalización de la ejecución?

Este es el contenido de mi archivo de script:

logFILE="/tmp/loggfile.log"

if [[ -z "$1" ]]; then echo "Please specify the run time, HH:MM "; exit 1; fi
runTIME=$1

at $runTIME <<< "
echo 'Running a task....'
echo 'An other task....'
echo 'END : (`date '+%H:%M'`)' >>$logFILE
"
echo "The command was scheduled to run at $runTIME"

Si lo ejecuto en16:00con ./script.sh 23:20, la tarea se ejecutará en23:20pero en el archivo de registro me saleEND : (16:00)

Cualquier ayuda será apreciada.

Respuesta1

datese ejecuta cuando se ejecuta el script porque `…`la sintaxis está entre comillas dobles. También está entre comillas simples internas, pero cuentan la mayoría de las comillas externas. El resultado atno es "ve" `date …`sino su salida.

Haga que las comillas externas sean simples y las internas dobles. atObtendrá toda la cadena tal como está. Cuando sea el momento adecuado se ejecutará, shlo cual se verá `date …`entre comillas dobles y solo entonces datese evaluará:

at "$runTIME" <<< '
echo "Running a task...."
echo "An other task...."
echo "END : (`date +%H:%M`)" >>"$logFILE"
'

Tenga en cuenta que eliminé las comillas simples más internas ( '+%H:%M'). En mi versión, desaparecerían al pasar la cadena a at; el código funciona sin ellos de todos modos.

información relacionada