Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Podmínka  (Přečteno 1283 krát)

webhope

  • Návštěvník
  • Příspěvků: 94
Podmínka
« kdy: 24 Ledna 2010, 15:23:24 »
Můžete mi překontrolovat tu podmínku, zdá se že to funguje, ale i tak nejsem si úplně stopro jistý...

    while [[ "$result" != "2" && "$result" != "1" ]]; do # ERR 2 - not mounted; ERR 1 - unmount successed
      echo $'\E[1;37m'; umount $nexttarget; result=$?; echo $'\E[1;0m'
    done

A chci se ještě zeptat proč se musí dávat za if dvě závorky:
if [[ "$WORK" =~ "TEST" ]]; then ... fi;
Když jsem tam měl jen [ ... ] tak to píše  [: postrádám „]“ ... ale nevím proč

premet

  • Host
Re: Podmínka
« Odpověď #1 kdy: 24 Ledna 2010, 15:55:52 »
Jak u while ani u if nemusíš mít dvě ty závorky, ty závorky vlastně nahrazují test
Např.
Kód: [Vybrat]
if test $i -ne $j; then .... je to stejný jako
Kód: [Vybrat]
if [ $i -ne $j ]; then ...
a pokud porovnáváš čísla jak máš [ "$result" != "2" && "$result" != "1" ] tak bych použil [ $result -ne 2 && $result -ne 1 ]

EDIT: Aha sem guma, dvojtý závorky jsou jak sem asi zjistil kvůli použití dvou porovnání
« Poslední změna: 24 Ledna 2010, 15:58:18 od Premet »

premet

  • Host
Re: Podmínka
« Odpověď #2 kdy: 24 Ledna 2010, 16:01:21 »
Dá se místo toho použít
Kód: [Vybrat]
if [foo] && [bar]; then ....
Evidentně jsem asi logický operátory v Bashi nepoužíval  ;D, aspoň jsem se něčemu přiučil.
« Poslední změna: 24 Ledna 2010, 16:03:57 od Premet »

 

Provoz zaštiťuje spolek OpenAlt.