katrinam Napisano Czerwiec 6, 2007 Zgłoszenie Share Napisano Czerwiec 6, 2007 if [ $1 = "-p" ] ; then precision=$2 shift 2 Nie rozumiem co robi shift. Czy może mi to ktoś wytłumaczyć? Czytałam mana, ale niestety nie pomogło mi to. Wiem, że jest to związane z parametrami, ale nie wiem z ktorym. Proszę o pomoc. Pozdrawiam KM Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Czerwiec 6, 2007 Zgłoszenie Share Napisano Czerwiec 6, 2007 if [ $1 = "-p" ] ; then precision=$2 shift 2 Nie rozumiem co robi shift. Podajesz liste parametrów do programu/skryptu np.skrypt.sh p1 p2 p3 p4 p5 p6 W podanym przez Ciebie przykladzie brakuje oczywiscie jakies petli, która bedzie "obracala" tym if'em, ale zakladajac, ze taka petla (np. while) istnieje to zapierwszym razem jako pierwszy parametr ($1) zostanie wziete p1, jako drugi ($2) - p2. Poecenie shift 2 przesunie wskaznik o dwa miejsca i nastapi kolejny obrót petli tylko ze tym razem $1 bedzie równy p3, $2 = p4. Kolejna petla - kolejne przesuniecie w prawo, ale skryptowi "wydaje sie", ze wciaz pracuje z parametrami $1 i $2, chociaz przy trzecim obrocie $1 jest równy p5, a $2 = p6. Metnie tlumacze, ale to trzeba po prostu spróbowac np.taki skrypt while [ "$#" -gt "0" ] do echo $1; echo $2; echo "przesun o 2" shift 2 done daje takie wyniki: ./abc.sh 1 2 a b p5 p6 1 2 przesun o 2 a b przesun o 2 p5 p6 przesun o 2 Jasniej nie dam rady Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
katrinam Napisano Czerwiec 6, 2007 Autor Zgłoszenie Share Napisano Czerwiec 6, 2007 Dziekuje za tlumaczenie, nawet zrozumialam :-) A czy mozesz mi równie jasno wytlumaczyc "$@" i "$?"? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Czerwiec 6, 2007 Zgłoszenie Share Napisano Czerwiec 6, 2007 A czy mozesz mi równie jasno wytlumaczyc "$@" i "$?"?Moge pod warunkiem, ze odpowiadajac nie bedziesz w calosci cytowala posta na który odpowiadasz - zjamuje miejsce i do tego robi sie smietnik. Jesli chodzi o $? sprawa jest prosta i tez najlepiej samemu spróbowac /home/waldo > rm przykladowyplik; echo "Kod bledu:" $? rm: przykladowyplik: A file or directory in the path name does not exist. Kod bledu: 2 /home/waldo > touch przykladowyplik; echo $? Kod bledu: 0 $? to kod bledu z wykonania ostatniej operacji. Jesli rózny od zera tzn. ze operacja zakonczyla sie niepowodzeniem a jak zero to wszystko bylo OK. W przykladzie na poczatku próbuje usunac nieistniejacy plik, wiec akcja konczy sie niepowodzeniem (kod bledu 2 jak sobie poszukasz oznacza wlasnie "A file or directory in the path name does not exist"). Potem zakladam ten plik. Mam uprawnienia do pisania w danym katalogu, wiec plik zakladam bez problemu, czyli wszystko jest OK - kod bledu = 0. $@ - pokazuje wszystkie parametry przekazane do skryptu. Skrypt najprostszy z mozliwych echo "Parametry skryptu: "$@ Wynik: /home/waldo > ./skrypt.sh raz dwa trzy cztery Parametry skryptu: raz dwa trzy cztery Ale to sa absolutne podstawy, które musisz sama pocwiczyc. Jest sporo stron na ten temat np. http://bash.wikidot.com/start Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
katrinam Napisano Czerwiec 6, 2007 Autor Zgłoszenie Share Napisano Czerwiec 6, 2007 OK, pięknie dziękuję za wyjaśnienie z przykładami :-) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się