我有一个bash脚本需要执行一些PHP脚本并获取结果,例如
#!/bin/bash
/usr/bin/php -f $HOME/lib/get_fifobuild.php
Run Code Online (Sandbox Code Playgroud)
脚本get_fifobuild.php返回一个整数,我需要将其分配给一个bash变量.如果有人帮助我,我会很感激.
谢谢 :)
编辑: php show.php
<?php
echo phpinfo();
exit;
?>
Run Code Online (Sandbox Code Playgroud)
bash脚本:
#!/bin/bash
HOME=`dirname $0`;
log(){
NEW_LOG=$HOME/logs/cloud-`date +%d_%m_%Y`.log
echo $1 >> $NEW_LOG
}
log "Date: `date`";
data=$(/usr/bin/php -f $HOME/lib/show.php);
log $data;
Run Code Online (Sandbox Code Playgroud)
输出:
Date: Fri Jun 15 19:16:00 PKT 2012
phpinfo()
Run Code Online (Sandbox Code Playgroud)
没有运气了
Joh*_*nce 10
myvariable=$(/usr/bin/php -f $HOME/lib/get_fifobuild.php)
Run Code Online (Sandbox Code Playgroud)
将您的php脚本的输出分配给名为"myvariable"的变量.
更新:
这会将命令的输出分配给变量,但是由于您仍然遇到问题,我可以建议一些事情:
你在其他地方有'get_builds.php'和'get_fifobuild.php'.
检查$ HOME是否正确设置.在这里使用不同的变量名称可能会更好,因为该环境变量通常设置为您的主目录.但是,当您从脚本获取输出时,这不太可能成为问题.
你给出的文件是PHP文件的确切内容吗?如果您有引号phpinfo(),例如它将导致输出只是字符串"phpinfo()".实际上,您根本不需要它echo,可以按如下方式创建PHP文件的内容.
get_fifobuild.php:
<?php
phpinfo();
?>
Run Code Online (Sandbox Code Playgroud)
更新2:
尝试将脚本更改为:
#!/bin/bash
HOME=`dirname $0`;
log(){
NEW_LOG=$HOME/logs/cloud-`date +%d_%m_%Y`.log
echo "$1" >> $NEW_LOG
}
log "Date: `date`";
data=$(/usr/bin/php -f $HOME/lib/show.php);
log "$data";
Run Code Online (Sandbox Code Playgroud)
基本上在'log'和'echo'行中的变量周围添加双引号.您遇到的问题是只记录了PHP输出的第一行.