我在 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 下执行相同的命令会产生你想要的输出