另一个中的 Bash 变量

另一个中的 Bash 变量

我正在尝试评估评估 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");')

在实际脚本中,日期将是动态变量。

有没有办法可以评估dateFromPHP 命令的内部?如果不可能,有没有办法可以用另一种方式达到 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

相关内容