cron
converte %
em nova linha para qualquer entrada crontab
. Você precisa escapar do %
s com \
:
* * * * * /FinalSync.sh "$(date --date="5 days ago" +\%d_\%m_\%Y)"
Esta pergunta já tem uma resposta aqui:
A seguir está minha entrada no crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y) || echo $? >> log
Não tem erro no arquivo de log também
Shell Script
#! /bin/sh
source=/Source/$1
destination=/Destination
folderParam=$(basename $source)
if /usr/bin/rsync -avh -r $source $destination; then
cp /FolderCopyStatus/Success /Status/Success_$folderParam
else
cp /FolderCopyStatus/Failure /Status/Failure_$folderParam
fi
Script executado perfeitamente quando eu uso na linha de comando como em
sh /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y)
Tags cron linux shell shell-script