我是使用Shell脚本的新手,今天学到了很多东西.
这是对该问题的扩展Assigning values printed by PHP CLI to shell variables
我得到了在shell脚本中读取变量的解决方案.现在如何操作数组?如果我在PHP代码中准备一个数组并进行打印,然后在我的shell中回显,它将显示Array.如何在shell脚本中访问该数组?我尝试了how to manipulate array in shell script中给出的解决方案
$neededConstants = array("BASE_PATH","db_host","db_name","db_user","db_pass");
$associativeArray = array();
foreach($neededConstants as $each)
{
$associativeArray[$each] = constant($each);
}
print $associativeArray;
外壳代码
function getConfigVals()
{
PHP $PWD'/developer.PHP'
}
cd ..
PROJECT_ROOT=$PWD
cd developer
# func1 parameters: a b
result=$(getConfigVals)
for((cnt=0;cnt<${#result};cnt++))
do
echo ${result[$cnt]}" - "$cnt
done
我得到这个输出:
Array - 0
- 1
- 2
- 3
- 4
而我想得到这个:
Array
BASE_PATH - /path/to/project
db_host - localhost
db_name - database
db_user - root
db_pass - root
解决方法:
print $associativeArray;
只会为您提供以下输出:
$PHP test.PHP
Array
您可以简单地在foreach循环中打印关联数组:
foreach ( $associativeArray as $key=>$val ){
echo "$key:$val\n";
}
给出变量名列表,内容以“:”分隔
$PHP test.PHP
BASE_PATH:1
db_host:2
db_name:3
db_user:4
db_pass:5
对于shell脚本,我建议使用简单易懂的shell构造,然后使用高级构造(例如${#result})正确使用它们.
我尝试了以下bash脚本,以将变量从PHP脚本输出获取到shell脚本:
# set the field separator for read comand
IFS=":"
# parse PHP script output by read command
PHP $PWD'/test.PHP' | while read -r key val; do
echo "$key = $val"
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。