Bash에서 PHP 파일의 변수를 읽는 방법

Bash에서 PHP 파일의 변수를 읽는 방법

Bash의 PHP 스크립트에서 변수를 내보내는 방법은 무엇입니까?

config.php각 웹 사이트의 파일에서 데이터베이스 이름을 읽은 다음 백업 저장소에서 데이터베이스를 가져오는 Bash 스크립트를 작성 중입니다 . PHP 변수를 사용해 보았지만 source config.php인식하지 못하는 것 같습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

"한 가지 일을 잘 수행"하는 프로그램(유닉스 철학)을 사용하는 것이 좋습니다. 이 경우에는 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 변수 유형이 많이 있습니다. 위의 코드는 $variable1. config.php변수를 여러 번 설정한 경우 변수가 설정되거나 head첫 번째 값 또는 마지막 값으로 설정되는 Bash 명령을 토글하여 설정할 수 있습니다.tail

관련 정보