我在 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 下的相同指令會產生您想要的輸出