我想將帶檔案名的日期添加到我的 bash 腳本中,該腳本將通過腳本添加到 crontab 檔案中。問題是 crontab 檔案中的條目已經附加了日期。但我的要求是在 crontab 中有 date 命令。
crontab -l > "$FILENAME"
if grep -i cron "$FILENAME"; then
echo "Cron Job already present in User's crontab file"
else
echo "*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date \%Y\%m\%dT\%H\%M\%S`.log 2>&1 " >> mycron
crontab mycron
echo "Crontab added to User's Crontab"
fi
實際的 :
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_20211217053830.log 2>&1
要求 :
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date %Y%m%d%H%M%S`.log 2>&1
我也嘗試添加轉義字符,但似乎沒有用
uj5u.com熱心網友回復:
使用貓
cat << '==CRONTAB_LINE==' >> mycron
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_$(date %Y%m%dT%H%M%S).log 2>&1
==CRONTAB_LINE==
結果
crontab -e
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_$(date %Y%m%dT%H%M%S).log 2>&1
uj5u.com熱心網友回復:
看起來您的 crontab 條目已關閉。由于%是 crontab 檔案中的特殊(換行符)字符,轉義它們應該會得到所需的結果:
*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_`date \%Y\%m\%d\%H\%M\%S`.log 2>&1
完成此操作的回聲線是:
echo "*/5 * * * * bash -x /home/cronjob/cron.sh > /home/cronjob/myjob_\`date \\%Y\\%m\\%dT\\%H\\%M\\%S\`.log 2>&1 " >> mycron
我證實這在 Ubuntu 中有效。
此外,將這一行添加SHELL=/bin/bash到 crontab 檔案(條目上方)可確保bash解釋 crontab 條目。雖然在這種情況下您可能不需要它,但它會帶來更多可能性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383845.html
上一篇:多重替換
下一篇:自定義bash提示PS1
