Nowe posty

Autor Wątek: Używanie porównań i pętli w bashu  (Przeczytany 3752 razy)

miodas007

  • Gość
Używanie porównań i pętli w bashu
« dnia: 2009-11-28, 16:58:10 »
W różnych skryptach widać różne rzeczy
- w jednych porównania typu -lt -le itd
- w drugi < <= itd
- w jednych widac takie petla jak np. for zm in 1, 2, 3 do... done
- w drugich for((zm=1; zm<4; zm++))

Zresztą nie tylko widać, ale i sam tworzę nie zastanawiając się dłużej którą "wersję" wybiorę.
Do zastanowienia zmusiło mnie nieuchronne kolokwium :) Wiem, że m.in ma być z basha. Wzbudziło to mój niepokój, gdyż jestem zdezorientowany tymi zapożyczeniami z C. Czy taka technika to klasyczny bash, a może wprowadzono je później.
Wdzięczny będę jeśli ktoś mi udzieli odpowiedzi na nurtujące mnie pytanie.

arctgx

  • Gość
Używanie porównań i pętli w bashu
« Odpowiedź #1 dnia: 2009-11-28, 20:33:04 »
Uff, ktoś w końcu nie zainteresowany wyłącznie gotowcem, zaliczeniem i zapomnieniem...

Myślę, że po lekturze manuala basha (polski wystarczy), rozjaśni Ci się sporo rzeczy.

Pierwsze dwa pytania: operator porównania zależy od typu - jakby to powiedzieć - środowiska, w którym go dokonujesz. Mogą to być pojedyncze (odpowiednik zewn. polecenia test) nawiasy kw., podwójne kw. (wtedy np. -lt) lub  podwójne okrągłe (wtedy zwykłe <). Znaczenie ma też typ zmiennych, które porównujesz, ale nie chce mi się teraz eksperymentować, co daje porównanie łańcuchów tekstowych z liczbami całkowitymi ;).

Na temat użycia pętli for zerknij do man bash. Przy okazji, pod koniec spojrzyj na opis polecenia declare.

Niezłe przykłady możesz zobaczyć w prezentacji http://www.uniforum.chi.il.us/slides/bash1.pdf

ra-v

  • Gość
Używanie porównań i pętli w bashu
« Odpowiedź #2 dnia: 2009-11-28, 23:46:48 »
Może się podłącze z kilkoma ciekawostkami, z którymi również spotkałem się na uczelni;) a u mnie zbytni nie działają
 if [ 1 -eg 1 ]; then echo x; fi
-eg to niby to samo co -eq ale u mnie nie działa


Poza tym w niektórych Linuksach niby działa(ło) polecenie
skrypt
które uruchamiało plik "skrypt" w bieżącym katalogu (ale nie /bin itp. tylko np. /home/user/)

arctgx

  • Gość
Używanie porównań i pętli w bashu
« Odpowiedź #3 dnia: 2009-11-29, 00:46:42 »
Cytat: ra-v
-eg to niby to samo co -eq
A niby skąd to wziąłeś? ;) Jako podstawę dokumentacji biorę man -LC bash (BASH_VERSION to 4.0.33(1)-release) . Tam nie znalazłem wzmianki o tym.

Dodaj bieżący katalog do ścieżki wyszukiwania PATH:
export PATH=.:$PATH

ra-v

  • Gość
Używanie porównań i pętli w bashu
« Odpowiedź #4 dnia: 2009-11-29, 23:11:34 »
eg  =? eq - to jest z normalne książki, używanej przez prowadzącego, sprawdzę wydawnictwo, rok itp. W moim manualu tego nie ma. I jeszcze sprawdzę man bash w szkole (sprawdzałem tylko man test).

A co do drugiego rozwiązania z PATH to nawet logiczne;) tylko raczej w nowych systemach niespotykane. I mało "bezpieczne", może dlatego zrezygnowano z tego pomysłu. np. gdy wpisujemy "cp plik1 plik2" na VFAT, w którym mamy wszystkie pliki ustawione na prawa 770 i plik "cp"  istnieje...

arctgx

  • Gość
Używanie porównań i pętli w bashu
« Odpowiedź #5 dnia: 2009-11-30, 01:37:59 »
Może to zwykła literówka: g zamiast q albo eg zamiast ge.

Sam nie używam bieżącego katalogu w ścieżce. W Knoppiksie bodajże spotkałem się z tym tylko.