BashでPHPファイルの変数を読み取る方法

BashでPHPファイルの変数を読み取る方法

BashのPHPスクリプトから変数をエクスポートする方法は?

config.php各Webサイトのファイルからデータベース名を読み取り、バックアップストアからデータベースをインポートするBashスクリプトを作成しています。私はPHP変数を試してみましたが、source config.php認識していないようです。

どんな助けでも大変感謝します。

答え1

「1つのことをうまく実行する」プログラム(Unix哲学)を使用することをお勧めします。この場合、PHPを使用してPHPを解析します。次のようにbashでこれを行うことができます。

variable1=$(php -r 'require("input.php"); echo $variable1;')
variable2=$(php -r 'require("input.php"); echo $variable2;')

テストにはinput.phpファイルを使用できます。たとえば、次のようになります。

<?php
$variable1="hello";
$variable2="hello2";
?>

戻り値を含むPHPファイルの例については、私の答えを参照してください。https://askubuntu.com/a/1469387/766334

答え2

確立された@Poikilosからの返信:

eval "$(
  php -r '
    require("config.php");
    foreach(get_defined_vars() as $name => $var)
      if (is_string($var))
        echo "php_", $name, "=", escapeshellarg($var), "\n";
  '
)"

$php_varname各文字列PHP変数に対してシェル変数が定義されています$varname

PHP変数にはNULバイト行が含まれていますescapeshellargs()

答え3

非常に単純化されたバージョンは次のとおりです。

2行config.php

cat config.php
$variable1 = 'foo with bar';
$variable1 = 'foo2 with bar2';

Bashがリセットされた場合は、inの最後の一致インスタンス$variable1に設定します。最初の一致に変更するには、次のように変更します。$variable1config.phptail -1head -1

variable1="$(grep -oE '\$variable1 = .*;' config.php | tail -1 | sed 's/$variable1 = //g;s/;//g')"

以下でBash変数を確認してくださいecho

echo "$variable1"
'foo2 with bar2'

これは主に文字列に適用されます。 Bash変数に直接変換できないPHP変数の種類がたくさんあります。上記のコードは$variable1config.php変数を複数回設定した場合は、変数を設定するか、head最初の値または最後の値に設定するBashコマンドを切り替えることで設定できます。tail

関連情報