date
выполняется, когда скрипт выполняется, потому что `…`
синтаксис находится внутри двойных кавычек. Это также внутри внутренних одинарных кавычек, но большинство внешних кавычек считается. Результат at
не "видит"`date …`
а выводится.
Сделайте внешние кавычки одинарными, внутренние кавычки двойными. at
получит всю строку как есть. Когда настанет время, оно будет запущено, sh
которое будет отображаться `date …`
в двойных кавычках и только тогда date
будет оцениваться:
at "$runTIME" <<< ' echo "Running a task...." echo "An other task...." echo "END : (`date +%H:%M`)" >>"$logFILE" '
Обратите внимание, что я отбросил самые внутренние одинарные кавычки ( '+%H:%M'
). В моей версии они исчезли бы при передаче строки at
; код работает без них в любом случае.