2013-05-02 11 views
14

Mam dwa skrypty Bash. Skrypty nadrzędne wywołują indeks dolny, aby wykonać pewne akcje i zwrócić wartość. Jak mogę zwrócić wartość z indeksu dolnego do skryptu nadrzędnego? Dodanie return w indeksie dolnym i przechwycenie wartości w obiekcie nadrzędnym nie działa.Bash - Wartość zwracana z indeksu dolnego do skryptu macierzystego

+1

Spójrz na to odpowiedź od wczoraj: http://stackoverflow.com/a/16325765/1983854 - może bardzo pomóc – fedorqui

Odpowiedz

24

Zakładam, że te skrypty działają w dwóch różnych procesach, tj. nie "pozyskujesz" jednego z nich.

To zależy od tego, co chcesz zwrócić. Jeśli chcesz tylko zwrócić kod wyjścia z przedziału od 0 do 255, a następnie:

# Child (for example: 'child_script') 
exit 42 


# Parent 
child_script 
retn_code=$? 

Jeśli chcesz powrócić ciąg tekstowy, a następnie trzeba będzie to zrobić poprzez standardowe wyjście (lub pliku). Istnieje kilka sposobów na przechwytywanie, że najprostsze jest:

# Child (for example: 'child_script') 
echo "some text value" 

# Parent 
retn_value=$(child_script) 
+1

Czy metoda echa zwraca wszystko, co było echo w skrypcie podrzędnym lub w ostatniej linii? –

+0

@AakilFernandes: w tym przypadku 'echo' zapisuje podaną linię:" trochę wartości tekstowej "w przykładzie. Jednak rodzic przechwytuje wszystkie standardowe wyjście z potomka, niezależnie od tego, czy pochodzi ono z "echa" czy nie. Może to być wiele linii oddzielonych znakami nowej linii '$ '\ n'' – cdarke

-3

zwraca wartość z indeksu dolnego i sprawdza zmienną $? które zawierają wartość zwracaną

+1

„powrót” jest tutaj niejednoznaczna, ponieważ instrukcja 'return' może być użyta tylko do powrotu z funkcji, a nie ze skryptu. Aby być precyzyjnym, musisz użyć instrukcji 'exit', aby powrócić ze skryptu. – chepner

+1

@chepner: właściwie 'return' może być również użyty z pliku" źródłowego "(' .' lub 'source'), ale czy to jest skrypt? – cdarke

+0

Ah, podchwytliwe. Domyślam się, że właściwą odpowiedzią jest "use" return' lub 'exit' w razie potrzeby". – chepner