Je suis confronté à un problème lorsque j’essaie d’exécuter mon script à partir de crontab mais lorsque j’essaie de l’exécuter manuellement, cela fonctionne parfaitement.
Fichier Crontab
54 * * * * /opt/SP/home/osbadm/scripts/tmp1.sh 2>&1
Fonction Sendmail
SUBJECT="test" TO="[email protected]" ( echo "TO: $TO" echo "MIME-Version: 1.0" echo "Subject: $SUBJECT" echo "Content-Type: text/html" cat $EXTRACT_CST_HTML ) | /usr/sbin/sendmail -f [email protected] $TO
Est-ce que quelqu’un peut m’aider s’il vous plait.
Vous ne pouvez pas mettre une affectation de variable avant le (
qui commence un sous-shell. Si vous avez collé votre script dans shellcheck.net, cela vous aurait dit:
SC1036: ‘(‘ n’est pas valide ici. Avez-vous oublié d’y échapper?
De plus, même si vous le pouviez, la variable serait uniquement définie dans l’environnement du sous-processus, elle ne serait pas visible lors du traitement des arguments dans sendmail
. Donc, mettez cette affectation sur sa propre ligne. En outre, un doc-here est un moyen plus simple de transmettre plusieurs lignes d’entrée à sendmail
.
TO="[email protected]" ( echo "TO: $TO" echo "MIME-Version: 1.0" echo "Subject: $SUBJECT" echo "Content-Type: text/html" cat $EXTRACT_CST_HTML ) | /usr/sbin/sendmail -f [email protected] $TO