从crontab向shell脚本传递日期

lp0sw83n  于 2022-12-27  发布在  Shell
关注(0)|答案(2)|浏览(126)

假设我有以下名为test.sh的shell脚本。

#!/bin/bash

echo $1 $2

我的crontab上有以下命令。

date=`date --date="next day" +"%Y-%m-%d"`
40 12 * * * ~/test.sh 1 $date

我收到的电子邮件如下。
为什么test.sh第二天www.example.com没有回显?当我向命令行传递$date时,它会打印出我希望它打印的内容,如下所示。

./test.sh 1 $date
1 2013-09-13

为什么会不同?我如何指示crontab在第二天传递到test.sh?

bt1cpqcv

bt1cpqcv1#

问题是crontab条目中的%字符。为了使用%,您必须将其转义。

# ~/test.sh 1 $(date --date="next day" +"%Y-%m-%d")
40 12 * * * ~/test.sh 1 $(date --date="next day" +"\%Y-\%m-\%d")
inb24sb2

inb24sb22#

我试过了,对我来说效果很好,在Fedora 18上。
您可以尝试几种替代方案:

date=$(date --date="next day" +"%Y-%m-%d")
40 12 * * * ~/test.sh 1 $date

或者

40 12 * * * ~/test.sh 1 `date --date="next day" +"%Y-%m-%d"`

或者

40 12 * * * ~/test.sh 1 $(date --date="next day" +"%Y-%m-%d")

相关问题