我正在尝试评估评估 PHP 命令的变量dateFrom
内部的变量。dateCalc
dateFrom="2013-01-05"
dateCalc=$(php -r '$date = new DateTime($dateFrom);echo $date->add(DateInterval::createFromDateString("-2 days"))->format("Y-m-d");')
在实际脚本中,日期将是动态变量。
有没有办法可以评估dateFrom
PHP 命令的内部?如果不可能,有没有办法可以用另一种方式达到 PHP 命令的相同结果?其他 shell 命令?
答案1
一般来说,最好通过环境或作为命令行参数传递变量:
$ export myvar=foobar
$ php -r 'printf("envvar is \"%s\"\n", getenv("myvar"));'
envvar is "foobar"
或者
$ myvar=foobar php -r 'printf("envvar is \"%s\"\n", getenv("myvar"));'
envvar is "foobar"
或者
$ php -r 'printf("arg is \"%s\"\n", $argv[1]);' foobar
arg is "foobar"
当你可以将变量数据嵌入到 PHP 脚本本身中,这将是一个坏主意,因为任何值都会与 PHP 语法混淆,除非您非常小心以确保正确引用该值。
也就是说,如果您只想获取两天前的日期,只需使用 GNU date 即可:
$ date -d '2013-01-05 - 2 days' +%F
2013-01-03
或n
存储在变量中的任意 YYYY-MM-DD 格式日期之前的天数:
$ dateFrom=2013-01-05 n=7
$ date -d "$dateFrom - $n days" +%F
2012-12-29