bash 쉘을 통해 PHP CLI를 사용하고 있습니다. 자세한 내용은 Manipulating an array (printed by php-cli) in shell script을 확인하십시오.bash 쉘 스크립트에서 동적 변수 (가변 변수) 시작
다음 쉘 코드에서 PHP 스크립트에서 얻은 key
- value
쌍을 표시 할 수 있습니다.
IFS=":"
# parse php script output by read command
php $PWD'/test.php' | while read -r key val; do
echo $key":"$val
done
는 다음이에 대한 출력 -
BASE_PATH:/path/to/project/root
db_host:localhost
db_name:database
db_user:root
db_pass:root
지금 난 그냥 내가 가진 값 '/path/to/project/root'
, $db_host
을 가진 $BASE_PATH
처럼 사용할 수 있도록 while 루프 내부에 동적 변수를 초기화 할 'localhost'
PHP 배경에서 왔습니다. 당신의 루프에서 사용, 그리고
key="BASE_PATH"
value="/path/to/project/root"
# Assign $value to variable named "BASE_PATH"
eval ${key}="${value}"
# Now you have the variable named BASE_PATH you want
# This will get you output "/path/to/project/root"
echo $BASE_PATH
: 나는 PHP
의$$key = $val
@Martin 감사합니다,이 작동하지만 while 루프 외부 변수 범위 문제가 있습니다. 루프 내에서 평가 라인 바로 다음에 변수를 에코 할 수 있지만 while 루프의'done' 키워드 바깥에는 들어갈 수 없습니다. –
읽기 구조가 하위 쉘을 생성 했으므로 맞습니다. 그런 다음 내부 변수가 루프 외부에 표시되지 않습니다. 대체 솔루션으로 답변을 업데이트하겠습니다 ... –
죄송합니다. 이렇게 작동하지 않습니다. 만약'while '을'php' 명령에서 분리한다면 (while'php $ PWD'/ test.php '| read -r key val; do'), while 루프는 한 번만 실행되고' $ key'와'$ val'은 비어 있습니다. –