从systemd bash内联脚本创建文件名_ $(日期%Y-%m-%d)

bob*_*les 5 linux bash inline date systemd

我正在尝试执行一个systemd计时器,并希望每个日期将执行的脚本的输出保存在文件中.这是我ExecStart.service文件中的脚本:

ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) >> /home/username/test_output_$(date +%Y-%m-%d).log'
Run Code Online (Sandbox Code Playgroud)

这会创建文件,但会添加"哈希"而不是月份名称:

~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log
Run Code Online (Sandbox Code Playgroud)

内容是一样的:

2017-ea3c0c2dd56c499a93412641e41008db-01
Run Code Online (Sandbox Code Playgroud)

如果我/bin/bash -c 'echo $(date +%Y-%m-%d)'在shell中运行而不通过systemd服务传递它,它会按预期工作.印刷品: 2017-09-01.

%m除了systemd环境中的月份数之外,它代表什么?

知道如何设置systemd服务以将脚本的标准输出放入具有当前日期的文件中吗?预期结果: test_output_2017-09-01.log

谢谢.

cpt*_*tPH 8

您需要通过将它们加倍来逃避$%符号才能使其工作.

如下所述:

要传递文字美元符号,请使用"$$"

ExecStart=/bin/bash -c 'echo $$(date +%%Y-%%m-%%d) >> /home/username/test_output_$$(date +%%Y-%%m-%%d).log'
Run Code Online (Sandbox Code Playgroud)