目前我们已经为新脚本设置了一个 cron 作业,如下所示:
46 22 * * * /gzm_common/diagbat9/global/prod/chgstatus.sh /backups/diagbat9/Demantra/output/SK_ITEM_EXTRACT_MFGPRO_$(date +%m%d%y).txt
它以 .txt 为扩展名的文件作为参数。当 cron 作业执行时,该文件没有被创建。这是我们在 22:46 pm 得到的文件:
22:46 SK_ITEM_EXTRACT_MFGPRO_
这是一个零字节文件,而它应该包含大量数据。我应该尝试将整个文件路径和名称放在双引号中吗?
答案1
您需要使用反斜杠转义百分比字符:
.../SK_ITEM_EXTRACT_MFGPRO_$(date +\%m\%d\%y).txt
从crontab(5)
手册页ISC实施cron
:
“第六”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,最多一个换行符或 % 字符,将由crontab 文件的变量
/bin/sh
中指定的 shell执行。命令中的SHELL
百分号 ( ),%
除非用反斜杠 (\
)转义, 将更改为换行符,并且第一个 % 之后的所有数据将作为标准输入发送到命令。无法将单个命令行拆分为多行,例如 shell 的尾随“\
”。