linux - 使用 sed 更改 crontab 行的标准输出
问题描述
我尝试在脚本的标准输出上添加日期时间并重定向到文件。
我使用以下命令:
python3 script.py 2>&1 | sed -e "s/^/$(date + \%F \%T") /" > output.log
当我在 crontab 编辑器中添加此命令时,sed 命令不起作用!你能帮我理解这个问题吗?先感谢您!
解决方案
看起来像一些引用问题。如果我正确理解了意图,我认为你想要这个:
python3 script.py 2>&1 | sed -e "s/^/$(date "+ %F %T")/" > output.log
在命令替换 ( $(...)
) 中,您可以使用另一组引号。这就像自己运行命令并使用输出一样。您原来的命令替换命令是:
date + \%F \%T"
最后加上额外的引号,)
没有注册为终止命令替换,所以它实际上并没有终止,这显然是一个语法错误。
我认为你试图做的是逃避空格,这将消除对额外引号的需要,如下所示:
date\ +\ %F\ %T
查看 shellcheck.net 以获取有关语法错误的帮助和一般建议。您也可以下载程序并直接在终端上使用。
推荐阅读
- javascript - 角度过滤器数组,只有 1 个值为 true 的对象
- sql - Kotlin Exposed 中存在 SQL 的等价物
- python - 如何正确分配二维数组中的值?
- r - 对于决策树,我应该将二进制因子变量编码为零还是一?
- r - 向每个多面 ggplot2 添加自定义的多个 geom_vline
- python - pygame.error: 无法打开 img\title.png
- react-native - 尝试使用 React.memo() api 摆脱列表太大的警告,但不确定我是否做得对
- android - 如何在android中仅获取当前连接的蓝牙设备名称
- javascript - 如何使用 webgl2 渲染多个纹理/图像(jpeg、pngs)?
- .net - 依赖注入获取新实例