【问题标题】:Executing PHP file from command line with dynamic parameters使用动态参数从命令行执行 PHP 文件
【发布时间】:2014-11-08 10:36:00
【问题描述】:

我需要运行一个脚本,它将一个日期作为参数。它使用 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 脚本非常陌生,因此如果有人可以对此提供输入将会很有帮助。

【问题讨论】:

  • 为什么需要两个相同的参数?
  • 没有。它也可能需要一个日期。我将编辑问题。

标签: php bash shell


【解决方案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

只需删除其中的回显,使其实际运行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

【讨论】:

  • 酷。非常感谢哥们:)
猜你喜欢
  • 2018-06-09
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多