2013-01-13 15 views
9

Wywołuję skrypt powłoki z innego skryptu powłoki, a wywoływany skrypt wymaga pewnych parametrów wejściowych (wiersza poleceń).
Mam poniższy kod, ale to nie działa. Nie wiem, dlaczego wartości argumentów nie są przekazywane do wywoływanego skryptu.Jak wywołać skrypt powłoki i przekazać argument z innego skryptu powłoki

script1.sh 
======================================= 
#!/bin/bash 
ARG1="val1" 
ARG2="val2" 
ARG3="val3" 
. /home/admin/script2.sh "$ARG1" "$ARG2" "$ARG3" 


script2.sh 
======================================= 
#!/bin/bash 
echo "arg1 value is: $1 ....." 
echo "arg2 value is: $2 ....." 
echo "arg3 value is: $3 ....." 

Ale kiedy wykonać script1.sh dostaję następujący wynik:

arg1 value is: ..... 
arg2 value is: ..... 
arg3 value is: ..... 

Czego mi brakuje?

+0

@John, czy mogę podać przyczynę pominięcia "Dziękuję"? – user85

+5

Nie ma to znaczenia. Celem tej strony jest zbudowanie crowdsourcowanego FAQ z krótkimi pytaniami i odpowiedziami. –

+1

@sumbad, Spójrz [tutaj] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts). Preferuję pytania bez "Dziękuję", "Cześć", "Pozdrowienia" i tak dalej. Pokój. :-) –

Odpowiedz

11

Dostarczając drugi skrypt z . /home/admin/script2.sh, skutecznie włączasz go do pierwszego skryptu, więc dostajesz argumenty wiersza poleceń do oryginalnego skryptu w [email protected]. Jeśli naprawdę chcesz rozmowy drugi scenariusz z argumentów, a następnie zrobić

/home/admin/script2.sh "$ARG1" "$ARG2" "$ARG3" 

(upewnij się, że jest to plik wykonywalny).

+0

tak to działa dla mnie !!! – user85

Powiązane problemy