我需要运行一个脚本,它将一个日期作为参数。它使用cron配置为每天运行,但我现在需要运行它一段时间。问题是,如果由于表的大小而运行了一天,这将获取所有结果。那么是否可以从shell脚本动态地从开始日期提供每个日期?
例如:如果我需要从update_cron.php
运行'2013-10-05'
,那么它需要运行
php update_cron.php '2013-10-05'
php update_cron.php '2013-10-06'
php update_cron.php '2013-10-07'
直到今天(或指定的结束日期)。我是shell脚本的新手,所以如果有人能给出一个输入,那将会很有帮助。
答案 0 :(得分:1)
这个功能应该让你入门
iterdate() {
cur="$1"
end="$2"
while [ $cur != $end ]
do
echo php update_cron.php $cur
cur=$(date -d "$cur + 1 day" +%Y-%m-%d)
done
}
你可以像这样使用它
$ iterdate 2013-10-05 2013-10-08
php update_cron.php 2013-10-05
php update_cron.php 2013-10-06
php update_cron.php 2013-10-07
只需删除其中的echo即可使其实际运行php update
命令。请注意,如果您需要在cron作业中运行它,您可能会发现编写它的脚本而不是函数更容易。然后将以下内容复制到文本文件中并使其可执行
#!/bin/bash
cur="$1"
end="$2"
while [ $cur != $end ]
do
echo php update_cron.php $cur
cur=$(date -d "$cur + 1 day" +%Y-%m-%d)
done
然后
$ /path/to/iterdate.sh 2013-10-05 2013-10-08
php update_cron.php 2013-10-05
php update_cron.php 2013-10-06
php update_cron.php 2013-10-07