Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用动态参数从命令行执行PHP文件_Php_Bash_Shell - Fatal编程技术网

使用动态参数从命令行执行PHP文件

使用动态参数从命令行执行PHP文件,php,bash,shell,Php,Bash,Shell,我需要运行一个脚本,它将一个日期作为参数。它使用cron配置为每天运行,但我现在需要在一个时间范围内运行它。问题是,由于表的巨大规模,如果运行一天,它将获取所有结果。那么,是否可以从shell脚本动态地提供从开始日期开始的每个日期 例如:如果我需要从'2013-10-05'运行update_cron.php,那么它需要运行 php update_cron.php '2013-10-05' php update_cron.php '2013-10-06' php update_cron.php '

我需要运行一个脚本,它将一个日期作为参数。它使用cron配置为每天运行,但我现在需要在一个时间范围内运行它。问题是,由于表的巨大规模,如果运行一天,它将获取所有结果。那么,是否可以从shell脚本动态地提供从开始日期开始的每个日期

例如:如果我需要从
'2013-10-05'
运行
update_cron.php
,那么它需要运行

php update_cron.php '2013-10-05'
php update_cron.php '2013-10-06'
php update_cron.php '2013-10-07'

直到今天(或指定的结束日期)。我对shell脚本非常陌生,因此如果有人能对此进行输入,这将非常有帮助。

此函数将帮助您开始使用

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

为什么它需要两个相同的参数?不。它也可以需要一个日期。我会编辑这个问题。酷。非常感谢,伙计:)