“echo”列印 crontab 中的選項

“echo”列印 crontab 中的選項

我在 Pi 型號 B 上運行 Rasbian 3.12.26+。

我的 cron 條目如下所示:

* * * * * sleep 11; { echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

這是我的日誌的樣子:

-en \e[1;4;33m
Thu Sep  4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!

但是,當我將命令貼到 bash 中時,它會按預期工作:

{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

輸出是

Thu Sep  4 14:27:51 UTC 2014
This is output from curl!

第一行加底線,如預期粗體和黃色。

由於某種原因,當由 crontab 運行時,echo 會列印“-en”而不是將其作為參數。因此,顏色轉義序列不會被轉義。

是什麼賦予了?

答案1

可能是 cron 使用 /bin/sh。透過比較以下輸出來親自查看:

/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

以上產生了您得到的輸出

/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

而 bash 下的相同指令會產生您想要的輸出

相關內容