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
Użytkownik

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
doneOffline






Admin łajza







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
Użytkownik

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
doneOffline






Admin łajza







Tak na oko (nie sprawdzałem w praktyce) o to chodzi (tylko przy każdym przypadku musisz dawać shift, inaczej się zapętli).
Offline




Użyszkodnik
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
Użytkownik

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