cronjob 运行时必须创建文件

cronjob 运行时必须创建文件

我需要一个 bash 脚本,在 cronjob 运行时创建不同的文件名。文件名应类似于file1, file2, file3.例如,如果 11 月 1 日 Cron 运行,它应该创建file1,对于 11 月 2 日,它应该创建file2

答案1

您从 cron 作业执行脚本这一事实是无关紧要的。该脚本只需要创建一个包含当天的值,并将其用作文件名。

获取一个月中的某一天并不像乍听起来那么简单。在 Linux 上的(版本 4.2+)中bash,这可以通过以下方式完成

printf -v filename 'file%(%-e)T' -1

...其中%(...)T是如何使用时间格式字符串来printf格式化时间戳,以及哪里%e是整数形式的月份日期。通常,%e如果日期是单个数字日期,则将包含初始空格字符,但使用%-e左对齐该数字以使空格消失。

但这在(某些)非 Linux 系统上不起作用,而是您得到的文件名file-e。因此,在这些系统上,最好使用%d来获取零填充的日期,例如08、 或02。如果您希望在列出文件名时在 shell 中很好地对文件名进行排序,那么这也是更好的选择。

printf -v filename 'file%(%d)T' -1

在具有较旧实现的系统上bash,例如 macOS(除非bash通过 Homebrew 安装了较新版本),您将需要调用date外部命令:

printf -v filename 'file%s' "$(date +%d)"

相关内容