Оцените дату в запланированном времени команды "at"

220
Ould Abba

Я использую файл сценария для выполнения некоторых задач с помощью команды AT, но в файле журнала указывается дата, когда я настраиваю команду AT, а не дату выполнения.

Что я могу сделать, чтобы отобразить фактическое время окончания выполнения?

Это содержимое моего скрипта:

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" 

Если я запускаю его в 16:00 с ./script.sh 23:20, задание будет выполнено в 23:20, но в файле журнала я получаюEND : (16:00)

Любая помощь будет оценена.

0

1 ответ на вопрос

0
Kamil Maciorowski

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; код работает без них в любом случае.

Похожие вопросы