Script de shell funciona no terminal, não quando é executado por cronjob

1

Oi pessoal Estou enfrentando uma situação estranha e eu procurei e não encontrei nada. Eu tenho um script que pega uma data e adiciona 72 horas a ela. Não há problema quando eu o executo a partir do terminal, mas quando ele é executado pelo cronjob, isso me causa um erro:

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

e quando eu o executo pelo cron, isso me dá esse erro:

date: extra operand ‘-d’ Try 'date --help' for more information.

você tem alguma idéia do porquê isso está acontecendo? obrigado

    
por Aria R. 21.02.2017 / 14:30

2 respostas

2

Você tem configurações de caminho diferentes quando executado pelo cron, portanto, sempre use caminhos absolutos em scripts ou serviços cron.

    
por 21.02.2017 / 15:38
0
Ok eu encontrei a solução, mas eu ainda não posso undrestand! se alguém souber que seria ótimo para esclarecer quando eu mudei o comando para isso:

end_YYYYMMDDHH=$(date --date="${start_YYYY}-${start_MM}-${start_DD} ${start_HH}:${start_II}:${start_SS} UTC +${flen} hours" -u "+%Y%m%d%H")

funciona corretamente, mas por algum motivo, se você mover esta parte: -u "+%Y%m%d%H" para o início do comando, ele deu esse erro!

o mais estranho é que o mesmo comando funciona em outra máquina! btw espero que isso ajude quem enfrentou este problema

    
por 22.02.2017 / 09:30