2012-06-15 57 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