Linux CRON:寻找匹配的“”时出现意外的 EOF

Dan*_*e B 2 bash cron newline escaping date

我在 cron 上运行这个命令:

0 4 1 * *  myfunc `date +%Y-%m`; anotherfunc
Run Code Online (Sandbox Code Playgroud)

在我的邮件文件中/var/spool/mail/myuser,我收到以下消息:

From root@myserver.localdomain  Thu Nov  1 04:00:01 2018
Return-Path: <root@myserver.localdomain>
X-Original-To: myuser
Delivered-To: daniele@myserver.localdomain
Received: by myserver.localdomain (Postfix, from userid 500)
    id 5F3A081CF9; Thu,  1 Nov 2018 04:00:01 +0100 (CET)
From: root@myserver.localdomain (Cron Daemon)
To: myuser@myserver.localdomain
Subject: Cron <myuser@myserver> myfunc `date +
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/myuser>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=myuser>
X-Cron-Env: <USER=myuser>
Message-Id: <20181101030001.5F3A081CF9@myserver.localdomain>
Date: Thu,  1 Nov 2018 04:00:01 +0100 (CET)

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dan*_*e B 6

我找到了原因:这是因为%应该用\

正确的版本是:

0 4 1 * *  myfunc `date +\%Y-\%m`; anotherfunc
Run Code Online (Sandbox Code Playgroud)

https://unix.stackexchange.com/questions/29578/how-can-i-execute-date-inside-of-a-cron-tab-job