その他の Bash 変数

その他の Bash 変数

dateFromPHPコマンドを評価する変数内の変数を評価しようとしています。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コマンドの同じ結果を得る方法はありますか?他のシェルコマンド?

ベストアンサー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構文と混同される可能性があるためです。


つまり、2日前の日付のみを取得したい場合は、GNU日付を使用してください。

$ 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

おすすめ記事