BASH skript

Sekcia: Programovanie 25.04.2007 | 21:57
????   Návštevník
Potrebujem helfnut s jednym skriptom v Bashi (nejako extra ho neovladam ale teraz som nuteny spravit jeden pomerne zlozity skript tak sa tym trapim);

Ide o to ze potrebujem podmienku ktora bude platna ak jeden z 3 testovanych suborov chyba(neexistuje).

THANKS
    • Re: BASH skript 25.04.2007 | 22:13
      asfsfs   Návštevník
      Jednoduchsie povedane potrebujem spustit blok prikazov ak chyba jeden zo suborov a neviem ako to bashu vysvetlit :-)
      • Re: BASH skript 25.04.2007 | 23:20
        Avatar Marián Ščerbák   Používateľ
        No, určite sú tu aj zdatnejší bashmakeri, ale asi by som použil niečo ako:
        if [-f meno súboru] ...
        . Teda ak súbor neexistuje ... Alebo skús rovno man test . (Tie zátvorky sú tiež príkazom test) A ozaj, bash to pochopí :-)
      • Re: BASH skript 26.04.2007 | 00:22
        Avatar Misko Kripel slackware  Používateľ
        [ ! -f prvy ] || [ ! -f druhy ] || [ ! -f treti ] && echo "jeden z nich chyba"
        asdf
        • Re: BASH skript 26.04.2007 | 17:58
          Avatar Misko Kripel slackware  Používateľ
          Priamociarejsie riesenie:
          urob_nieco() {
            echo "jeden zo zadanych suborov neexistuje"
          }
          
          if [ -f prvy ]; then
            if [ -f druhy ]; then
              if [ -f treti ]; then
              else
                urob_nieco
              fi
            else
              urob_nieco
            fi
          else
            urob_nieco
          fi

          Alebo;
          if [ ! -f prvy ] || [ ! -f druhy ] || [ ! -f treti ]; then
            urob_nieco
          fi
          asdf
          • Re: BASH skript 26.04.2007 | 21:14
            ????   Návštevník
            OK diky slackware.
            Viem programovat v C++ takze som to pochopil hned na prvy krat. Diki moc som vedel ze to musi ist dajako podobne, ale nevedel som ze logicke operatory sa davaju mimo zatvoriek som to skušal takto

            if [ ! -f prvy || ! -f druhy] ale tak to samozrejme neslo.

            Fakt dik
            • Re: BASH skript 27.04.2007 | 01:51
              Avatar Misko Kripel slackware  Používateľ
              ok, a pozor na medzery! Musi to byt takto

              ifmedzera[medzera-fmedzerasubormedzera];medzerathen
              fi

              hlavne okolo tych [ ] zatvoriek to treba dodrziavat, plus ak porovnavas napr. retazce tak odporucam oba dat do uvodzoviek, aj `prikaz`, cize:

              if [ "`pwd`" = "/home/xxx" ]; then
              fi

              A nepouzivaj ==, funguje to ale nie vzdy, radsej obycajne =
              asdf
    • Re: BASH skript 27.04.2007 | 02:15
      Avatar borg Fedora  Administrátor
      SUBORY=(subor1 subor2 subor3)

      for SUBOR in ${SUBORY[@]} ; do
      if [ ! -f $SUBOR ]; then
      prikazy
      fi
      done;
      • Re: BASH skript 27.04.2007 | 13:59
        Avatar uid0 Debian  Používateľ
        teraz sa to moze vykonat az 3x, nemam pravdu?
        Debian. apt-get into it…
        • Re: BASH skript 27.04.2007 | 14:52
          Avatar borg Fedora  Administrátor
          tak nech si tam buchne break

          SUBORY=(subor1 subor2 subor3)

          for SUBOR in ${SUBORY[@]} ; do
          if [ ! -f $SUBOR ]; then
          prikazy
          break
          fi
          done;
          • Re: BASH skript 27.04.2007 | 16:04
            Avatar uid0 Debian  Používateľ
            presne tak sa mi to paci :) toto je kvalitne systemove riesenie problemu...
            Debian. apt-get into it…
            • Re: BASH skript 27.04.2007 | 21:29
              Avatar Misko Kripel slackware  Používateľ
              co je zle na tomto:

              [ ! -f prvy ] || [ ! -f druhy ] || [ ! -f treti ] && echo "jeden z nich chyba"
              asdf
              • Re: BASH skript 27.04.2007 | 21:45
                WlaSaTy   Návštevník
                to bola ironia. zamysli sa nad tym kodom kolko krat sa mu to vykona a kolko krat tebe. a hlavne kolko krat by sa to malo podla zadania vykonat :-)
                • Re: BASH skript 27.04.2007 | 21:46
                  WlaSaTy   Návštevník
                  oops, sorry, nevsimol som si break.
              • Re: BASH skript 27.04.2007 | 21:58
                Avatar borg Fedora  Administrátor
                ked budes chcet testovat na stvrty, piaty... subor? budes pridavat podmienky? staci ich pridat do pola. a navyse ten moj kod je krajsi :P