如何将包含百分号 (%) 的文件名作为参数传递给 cron 中的 shell 脚本?

如何将包含百分号 (%) 的文件名作为参数传递给 cron 中的 shell 脚本?

目前我们已经为新脚本设置了一个 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 的尾随“ \”。

相关内容