首页 > 解决方案 > 使用 sed 更改 crontab 行的标准输出

问题描述

我尝试在脚本的标准输出上添加日期时间并重定向到文件。

我使用以下命令:

python3 script.py 2>&1 | sed -e "s/^/$(date + \%F \%T") /" > output.log

当我在 crontab 编辑器中添加此命令时,sed 命令不起作用!你能帮我理解这个问题吗?先感谢您!

标签: linuxbashsedcron

解决方案


看起来像一些引用问题。如果我正确理解了意图,我认为你想要这个:

python3 script.py 2>&1 | sed -e "s/^/$(date "+ %F %T")/" > output.log

在命令替换 ( $(...)) 中,您可以使用另一组引号。这就像自己运行命令并使用输出一样。您原来的命令替换命令是:

date + \%F \%T"

最后加上额外的引号,)没有注册为终止命令替换,所以它实际上并没有终止,这显然是一个语法错误。

我认为你试图做的是逃避空格,这将消除对额外引号的需要,如下所示:

date\ +\ %F\ %T

查看 shellcheck.net 以获取有关语法错误的帮助和一般建议。您也可以下载程序并直接在终端上使用。


推荐阅读