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