2012-06-15 13 views
6

मैं एक bash स्क्रिप्ट है जो कुछ php स्क्रिप्ट निष्पादित करने के लिए और वापस पाने के लिए परिणाम जैसेबैश से PHP स्क्रिप्ट निष्पादित, एक बैश चर

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

स्क्रिप्ट get_fifobuild.php एक पूर्णांक रिटर्न की जरूरत के लिए उत्पादन आवंटित जो मुझे एक बैश वैरिएबल में असाइन करने की आवश्यकता है। अगर कोई मेरी मदद करता है तो मैं सराहना करूंगा।

धन्यवाद :)

संपादित करें: php show.php

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

बैश स्क्रिप्ट:

#!/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 चरम पर मुद्रित मानों को असाइन करने वाले मानों को असाइन करना] (http://stackoverflow.com/questions/4376695/assigning-values-printed-by-php-cli-to-shell-variables)। शैल चर के लिए प्रोग्राम के आउटपुट को असाइन करने के बारे में SO पर कई प्रश्न हैं। क्या आपने एक खोज की? –

+1

हां मैंने ऐसा किया है, लेकिन कोई भाग्य नहीं :( – sakhunzai

+0

क्या आपने "[bash असाइन वेरिएबल] (http://stackoverflow.com/search?q=bash+assign+variable)" खोजा है? –

उत्तर

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

एक चर "myvariable" कहा जाता है करने के लिए अपने php स्क्रिप्ट से उत्पादन आवंटित करेगा।

अद्यतन:

यह चर करने के लिए आदेश के उत्पादन में प्रदान करेंगे, लेकिन जैसा कि आप अभी भी समस्या हो रही है मैं शायद कुछ चीजें कर सकते हैं सुझाव:

  1. आप 'get_builds .php 'और' get_fifobuild.php 'कहीं और।

  2. जांचें कि $ HOME सही तरीके से सेट किया जा रहा है। आप यहां एक अलग चर नाम के साथ बेहतर हो सकते हैं क्योंकि पर्यावरण चर आमतौर पर आपकी होम निर्देशिका पर सेट होता है। हालांकि यह समस्या होने की संभावना नहीं है क्योंकि आप स्क्रिप्ट से आउटपुट प्राप्त कर रहे हैं।

  3. क्या आपने पाठ को सटीक अपनी PHP फ़ाइल की सामग्री दी है? यदि आपके पास उद्धरण phpinfo() उद्धरण है उदाहरण के लिए यह आउटपुट केवल "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

बैश और PHP फ़ाइल दोनों के लिए मेरा सटीक फ़ाइल कोड देखें। – sakhunzai

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

नोट: ये बैकटिक्स हैं।

+0

कृपया अपने व्हाइटस्पेस को ठीक करें, – kojiro

+0

सही ... एक आदत से बाहर – Rufinus

+1

कृपया' \ '\' 'सम्मेलन पर' $() 'सम्मेलन का उपयोग करें। यह अधिक पठनीय और बैकटीक्स को घोंसला नहीं दिया जा सकता है (जबकि डॉलर सम्मेलन कर सकते हैं) – cmh

संबंधित मुद्दे