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

相关内容