
이상한 상황에 직면해 검색했지만 아무것도 찾지 못했습니다. 날짜를 가져오고 72시간을 추가하는 bash 스크립트가 있습니다. 터미널에서 실행하면 문제가 없지만 cronjob을 통해 실행하면 오류가 발생합니다.
if [ $# -eq 3 ] ; then
# ----------
# PARAMETERS
# ----------
start_YYYYMMDDHH=${1}
ini_YYYYMMDDHH=${2}
flen=${3}
ini_HH=${ini_YYYYMMDDHH:8:2}
start_YYYY=${start_YYYYMMDDHH:0:4}
start_MM=${start_YYYYMMDDHH:4:2}
start_DD=${start_YYYYMMDDHH:6:2}
start_HH=${start_YYYYMMDDHH:8:2}
start_II=00
start_SS=00
end_YYYYMMDDHH=`date --utc +%Y%m%d%H%i%s -d "${start_YYYY}-${start_MM}-${start_DD} ${start_HH}:${start_II}:${start_SS} UTC +${flen} hours"`
end_YYYYMMDDHH=${end_YYYYMMDDHH:0:10}
end_YYYY=${end_YYYYMMDDHH:0:4}
end_MM=${end_YYYYMMDDHH:4:2}
end_DD=${end_YYYYMMDDHH:6:2}
end_HH=${end_YYYYMMDDHH:8:2}
end_II=00
end_SS=00
cron을 통해 실행하면 다음 오류가 발생합니다.
날짜: 추가 피연산자 "-d" 자세한 내용을 보려면 "date --help"를 시도하십시오.
왜 이런 일이 일어나는지 아십니까?
답변1
cron이 실행 중일 때 경로 설정이 다르므로 cron 스크립트나 서비스에서는 항상 절대 경로를 사용하십시오.
답변2
해결책을 찾았습니다.
end_YYYYMMDDHH=$(date --date="${start_YYYY}-${start_MM}-${start_DD} ${start_HH}:${start_II}:${start_SS} UTC +${flen} hours" -u "+%Y%m%d%H")
-u "+%Y%m%d%H"
잘 작동하지만 어떤 이유로 이 부분을 명령 시작 부분으로 옮기면 오류가 발생합니다!
아주 이상하게도 같은 명령이 다른 컴퓨터에서도 작동합니다!