是否有可能做这样的事情以获得下面的输出。
击
myArray='\${array("Red","Green","Blue")};'
echo $myArray
PHP
$ScriptData = "${shell_exec('script.sh')}:"
var_dump($ScriptData);
输出:
array(3) {
[0]=> string(3) "Red"
[1]=> string(5) "Green"
[2]=> string(4) "Blue"
}
答案 0 :(得分:2)
是的,您也可以使用' exec'函数,它返回脚本的输出:
$output = array();
exec('script.sh', $output);
var_dump($output);
但是我认为如果你的shell脚本输出一个逗号分隔的列表并在php端爆炸它会更安全:
$output = explode(',', shell_exec('script.sh');
答案 1 :(得分:1)
只需在PHP中执行此操作
$data = shell_exec('path/to/script.sh');
答案 2 :(得分:1)
让shell脚本在单独的行上输出每个条目更容易:
myArray=(Red Green Blue)
for i in ${myArray[*]}; do
echo $i
done
使用exec()
函数从PHP运行shell脚本,并将数组变量作为其第二个参数传递。执行命令的每一行输出都被添加到该数组中,没有尾随换行符。
$output = array();
exec('script.sh', $output);
print_r($output);
它会准确生成您在问题中发布的输出。
答案 3 :(得分:1)
简单而强大的是交出json编码的数组:
#!/bin/bash
myArray="'[\"Red\",\"Green\",\"Blue\"]'"
php -r "var_dump(json_decode($myArray));";
输出是:
array(3) {
[0]=>
string(3) "Red"
[1]=>
string(5) "Green"
[2]=>
string(4) "Blue"
}
答案 4 :(得分:0)
也可以使用eval
myArray='$data = array("Red","Green","Blue");'
echo $myArray
PHP
$ScriptData = shell_exec("sh script.sh");
echo $ScriptData;
# $data = array("Red","Green","Blue");
eval($ScriptData);
print_r($ScriptData);
# Array
# (
# [0] => Red
# [1] => Green
# [2] => Blue
# )