2012-06-15 11 views
6

Mam skrypt bash, który trzeba wykonać niektóre skrypty php i wrócić wyniki npWykonaj skrypt php z bash, przypisać wyjście do zmiennej bash

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

Skrypt get_fifobuild.php zwraca liczbę całkowitą, która Muszę przypisać do zmiennej bash. Będę wdzięczny, jeśli ktoś mi pomoże.

dzięki :)

Edit: skrypt 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; 

wyjściowa:

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

nie szczęścia jeszcze

+0

Prawdopodobny duplikat [Przypisywanie wartości drukowanych przez PHP CLI do zmiennych powłoki] (http://stackoverflow.com/questions/4376695/assigning-values-printed-by-php-cli-to-shell-variables). Jest wiele pytań na temat przydzielania wyjścia programu do zmiennych powłoki. Czy szukasz? –

+1

Tak, zrobiłem tak, ale bez powodzenia :( – sakhunzai

+0

Szukałeś "[zmienna bash assign] (http://stackoverflow.com/search?q=bash+assign+variable)"? –

Odpowiedz

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

przydzieli wyjście ze skryptu php do zmiennej o nazwie „myVariable”.

Aktualizacja:

To przypisze wyjściowe polecenia do zmiennej, ale nadal masz problemy mogę być może zaproponować kilka rzeczy:

  1. masz „get_builds .php "i" get_fifobuild.php "w innym miejscu.

  2. Sprawdź, czy $ HOME jest ustawione poprawnie. Możesz być lepiej z inną nazwą zmiennej, ponieważ ta zmienna środowiskowa jest ogólnie ustawiona na twój katalog domowy. Jest to jednak mało prawdopodobne, ponieważ otrzymujesz dane wyjściowe ze skryptu.

  3. Czy tekst, który podałeś, zawierał dokładną treść: twojego pliku PHP? Jeśli masz na przykład wycinki około phpinfo(), wynik będzie po prostu ciągiem "phpinfo()". W rzeczywistości wcale nie potrzebujesz echo i możesz utworzyć zawartość twojego pliku PHP w następujący sposób.

get_fifobuild.php:

<?php 
    phpinfo(); 
?> 

Aktualizacja 2:

Spróbuj zmienić skrypt:

#!/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"; 

Zasadniczo dodanie cudzysłowie zmiennych w ' log 'i' echo 'linie. Problem polegał na tym, że rejestrowany był tylko pierwszy wiersz twojego wyjścia php.

+0

proszę sprawdzić edycję pytań, Próbowałem tego, ale bez powodzenia – sakhunzai

+0

Zobacz moją aktualizację Mam nadzieję, że pomoże! –

+0

Sprawdź mój dokładny kod pliku zarówno dla pliku bash i php – sakhunzai

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

uwaga: są to linki tylne.

+0

Napraw swoje białe znaki, proszę ... – kojiro

+0

prawo ... z przyzwyczajenia – Rufinus

+1

Należy użyć konwencji' $() 'w konwencji' \ '\' 'Jest to bardziej czytelne i nie można zagnieżdżać zwrotów (podczas gdy Konwencja dolarowa może) – cmh