Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Skrypt może być uruchomiony z kilkoma opcjami, dlatego wpadłem na pomysł by napisać prostą tablicę do identyfikowania opcji, używając for i case. Przy wywołaniu skryptu z m.in. opcją ''-p'' jako następna opcja podawana jest ścieżka. Opcje mogą być wpisywane w dowolnej kolejności, dlatego nie wiadomo, która jest "-p". Nie mam pojęcia co zrobić, by po zidentyfikowaniu opcji ''-p'' skrypt wykonał działanie na ścieżce (czyli opcji o jeden wyższej). Jak to się robi?
Kod poglądowy:
zmienna1=0 zmienna2=0 zmienna3=1 for var in $1 $2 $3 $4 $5 ; do case $var in "opcja1") zmienna1=1 ;; "opcja2") zmienna2=1 ; zmienna3=0 ;; "-p") echo "wybrana ścieżka to "$opcja-o-1-większa-od-p".";; *) echo "" esac done
Offline
1. Najlepiej skorzystać z getopts.
2. Jeśli już musisz — za pomocą shift możesz „usuwać” argumenty (po shift 1 $1 zniknie, $2 stanie się $1, itd.). W takiej sytuacji zmień:
for var in $1 $2 $3 $4 $5 ; do
na:
while [ -n "$1" ]; do
bo się pogubisz przy licznych arumentach.
Offline
1. Bratam się z bashem od tygodnia. Żaden poradnik o czymś takim nie wspominał :)
2. Dzięki. Dobrze zrozumiałem?
while [ -n "$1 ] ; do case $1 in "a") echo something ;; "b") echo "something else" ;; "-p") shift wget http://something.else/slash.dot -P $1 ;; *) echo "nieprawidłowy argument "$1"" ; exit ;; esac shift done
Offline
Tak na oko (nie sprawdzałem w praktyce) o to chodzi (tylko przy każdym przypadku musisz dawać shift, inaczej się zapętli).
Offline
kondziu jah: tylko jedna uwaga — zamiast przy obsłudze flagi -p od razu wywoływać wgeta, lepiej jest tam wartość zmiennej $1 przypisać do jakiejś innej zmiennej (dowolnej, może być $URL) i samego wgeta wywoływać poza pętlą.
Wynika to m.in. z tego, że użytkownik po fladze -p może podać jakąś inną, która powinna zmodyfikować działanie skryptu.
Zobacz np.
rm -rf --help jakis_bardzo_wazny_plik
Offline
Ten wget to tylko przykład. Docelowo case stworzyłem po to, by za pomocą opcji użytkownik mógł zmodyfikować wartość kilku zmiennych, czyli włączyć/wyłączyć kilka funkcji.
Ale masz plusa za czujność :)
Offline
Strony: 1