"at" 명령 예약 시간에 날짜를 평가합니다.

"at" 명령 예약 시간에 날짜를 평가합니다.

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)

도움을 주시면 감사하겠습니다.

답변1

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; 어쨌든 코드는 그것들 없이도 작동합니다.

관련 정보