2012-06-15 94 views
6

我有一个bash脚本,需要执行一些PHP脚本和找回结果,如执行PHP脚本,分配输出到一个bash变量

#!/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() 

还没有运气

+0

[将通过PHP CLI打印的值分配给shell变量]可能有重复(http://stackoverflow.com/questions/4376695/assigning-values-printed-by-php-cli-to-shell-variables)。关于将程序的输出分配给shell变量有很多问题。你有搜索吗? –

+1

是的,我已经这样做了,但没有运气:( – sakhunzai

+0

您是否搜索“[bash assign variable](http://stackoverflow.com/search?q=bash+assign+variable)”? –

回答

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

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

更新

这将分配命令变量的输出,但你仍然有问题,我可以或许暗示的几件事情:

  1. 你有“get_builds .php'和'get_fifobuild.php'。

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

  3. 您输入的文字是确切您的PHP文件的内容?例如,如果你的报价为 ,那么它会导致输出只是字符串“phpinfo()”。实际上,您根本不需要echo,并可以如下所示创建PHP文件的内容。

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

基本上围绕增加变量双引号中的'日志'和'回声'行。你遇到的问题是,只有你的PHP输出的第一行被记录。

+0

请检查问题编辑,我试过这个,但没有运气 – sakhunzai

+0

看到我的更新,希望它有帮助! –

+0

检查我的确切文件代码为bash和php文件。 – sakhunzai

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

注意:这些是反引号。

+0

修正你的空白,请 – kojiro

+0

正确......出于习惯 – Rufinus

+1

请在'''''约定中使用'$()'约定,它更具可读性,反引号不能嵌套(而美元约定可以) – cmh