Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: webhope 24 Ledna 2010, 15:23:24

Název: Podmínka
Přispěvatel: webhope 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č
Název: Re: Podmínka
Přispěvatel: premet 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í
Název: Re: Podmínka
Přispěvatel: premet 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.