Shell-Script

命令在 crontab 中不起作用

  • July 5, 2021

我有一個小檢查今天是否是每月的第一個星期一,就像這樣:

['$(date "+%u")' = "1"] && echo 'trąba'

但是當 crontab 向我發送一封出錯的電子郵件時,我收到了錯誤消息

/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file

我嘗試將*’$(date “+%u”)’*更改為 " $ (date ‘+%u’)" but didn’t help. The title of the email is [" $ (date ‘+ 所以我認為第一個引號有問題但是這段程式碼在終端內執行時工作得很好。也許有人更好地“檢查”來檢查每月的第一個星期一

作業系統:CeontOS 7

數一下

* * * * * [ "$(date +%u)" -eq 1 ] && echo trąba

固定 POSIX 程式碼如下:

[ "$(date +%u)" -eq 1 ] && echo trąba

錯誤/警告/資訊是:

  • [..]塊中缺少空格
  • 撇號而不是雙引號
  • 等號而不是-eq測試中的POSIX [..]
  • 您不必在之後引用任何內容echo
  • 你不必引用數字
  • 您不必引用該date程式碼

克朗

*/1 * * * * [ "$(/usr/bin/date +\%u)" -eq 1 ] && /usr/bin/echo trąba >> ~/cron-test
  • 為了測試這一點,您可以嘗試上面的程式碼
  • 您可能在系統的其他地方擁有您的dateecho二進製文件,以確定它們在哪裡,使用which date等。
  • 修改你的 Cron 後,你可以簡單地使用它並坐穩
tail -f ~/cron-test

引用自:https://unix.stackexchange.com/questions/657014