从bash执行php脚本,将输出分配给bash变量

时间:2012-06-15 12:55:38

标签: php bash

我有一个bash脚本需要执行一些php脚本并取回结果,例如

#!/bin/bash
/usr/bin/php -f $HOME/lib/get_fifobuild.php

脚本get_fifobuild.php返回一个我需要分配给bash变量的整数。如果有人帮助我,我会很感激。

谢谢:)

修改 php show.php

<?php 
  echo phpinfo();
  exit;
?>

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;

输出:

Date: Fri Jun 15 19:16:00 PKT 2012
phpinfo()

没有运气

2 个答案:

答案 0 :(得分:10)

myvariable=$(/usr/bin/php -f $HOME/lib/get_fifobuild.php)

将php脚本的输出分配给名为“myvariable”的变量。

<强>更新

这会将命令的输出分配给变量,但是由于您仍然遇到问题,我可以提出一些建议:

  1. 你在其他地方有'get_builds.php'和'get_fifobuild.php'。

  2. 检查$ HOME是否正确设置。在这里使用不同的变量名称可能会更好,因为该环境变量通常设置为您的主目录。但是,当您从脚本获取输出时,这不太可能是问题。

  3. 您提供了PHP文件的完全内容?如果你有报价 以phpinfo()为例,它会使输出只是字符串“phpinfo()”。实际上,您根本不需要echo,可以将PHP文件的内容设置如下。

  4. get_fifobuild.php:

    <?php
        phpinfo();
    ?>
    

    更新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";
    

    基本上在'log'和'echo'行中的变量周围添加双引号。您遇到的问题是只记录了PHP输出的第一行。

答案 1 :(得分:0)

foobar=`/usr/bin/php -f $HOME/lib/get_fifobuild.php`

注意:这些都是反击。