Ziednodušenie skryptu

Sekcia: Programovanie 25.03.2007 | 21:44
Avatar Tomáš Lehocký Lubuntu  Používateľ
Zdravím
mám takúto časť skryptu a potreboval by som jej zápis nejako skrátit:

.........

if [ "`grep "RV370" $POMF`" != "" ] || ...........atď vela krát [ ..... ] || [ "`grep "RV380" $POMF`" != "" ]; then
echo "ok"

.......

ziednodušiť to potrebujem najme kvoli tomu že časti RVxxx budú postupťe pribúdať a celé sa to stáva neprehladné keď sú tam tie hranaté zátvorky....

ďakujem
tomolc
tomolc
    • Re: Ziednodušenie skryptu 25.03.2007 | 22:01
      Avatar borg Fedora  Administrátor
      pouzi regularne vyrazy
      napr. grep 'RV[\d{3}]' $POMF
    • Re: Ziednodušenie skryptu 25.03.2007 | 22:07
      WlaSaTy   Návštevník
      nechces to predsa len prerobit trosku inac?

      subor /usr/share/hwdata/pci.ids poznas, lspci dokaze vypisat aj numericke identifikatory zariadenie. bude to jednoduchsie a cistejsie.
      • Re: Ziednodušenie skryptu 25.03.2007 | 22:38
        Avatar Tomáš Lehocký Lubuntu  Používateľ
        možem to spraviť aj ináč..

        prímam akékolvek konkrétne návrhy...

        tomolc

        ak to pomôže tak tu sú oba skrypty:
        http://disk.jabbim.cz/tomolc@jabbim.sk/rootcopy.tar.gz
        tomolc
        • Re: Ziednodušenie skryptu 25.03.2007 | 23:02
          WlaSaTy   Návštevník
          este mi povedz ci to mam aj vyskusat alebo ti staci opisat ako by to mohlo byt?
          • Re: Ziednodušenie skryptu 25.03.2007 | 23:27
            Avatar Tomáš Lehocký Lubuntu  Používateľ
            Som desktopista a so bash-om teprve začínam.
            Takže mi to dosť ulahčíš keď mi napíšeš priamo ako to má byť. Ak máš čas a nezaťaží ťa to tak to prosímťa vyskúšaj.

            tomolc
            tomolc
            • Re: Ziednodušenie skryptu 26.03.2007 | 00:02
              WlaSaTy   Návštevník
              myslim ze sme sa o tomto skripte bavili niekolko krat. ked to chces mat po svojom, tak ti branit nebudem. zial, nemam to ako a ani preco vyskusat takze mozem poskytnut len riesenie ktore odbura urcity aspekt. poznas egrep, respektive parameter -e programu grep?
              • Re: Ziednodušenie skryptu 26.03.2007 | 17:52
                Avatar Tomáš Lehocký Lubuntu  Používateľ
                dobre napíš čo si myslíže že treba a ja už sa s tým nejako popasujem

                tomolc
                (príkaz grep poznám "z videnia" jeho parametre nepoznám)
                tomolc
    • Re: Ziednodušenie skryptu 26.03.2007 | 18:36
      wolf09   Návštevník
      pokud trvate na grep tak takto :
      if egrep -q "RV370|RV380|RVxxx" $POMF ; then echo "OK" ; fi
      • Re: Ziednodušenie skryptu 26.03.2007 | 19:40
        Avatar borg Fedora  Administrátor
        vyssie ma kratsiu formu
        • Re: Ziednodušenie skryptu 26.03.2007 | 20:13
          WlaSaTy   Návštevník
          pokial myslis moj odkaz na grep -e string1 -e string2 tak nie, tento egrep je kratsi o par znakov. ovsem prehladnejsie je pouzit tie pci.ids, ale to vyzaduje lexikalny parser aj s rozhodovanim ktore karty spadaju este pod ktory bundle ovladacov a aj rozhodovanie aby to nejaky slahnuty vyrobca nerozhodil tak ako sa to stalo napriklad v pripade IBM (preklep je ..ina).

          takze ten egrep predsa len vyhrava na plnej ciare :-)
          • Re: Ziednodušenie skryptu 26.03.2007 | 20:25
            Avatar borg Fedora  Administrátor
            myslel som hned prvy prispevok odo mna
            • Re: Ziednodušenie skryptu 27.03.2007 | 02:07
              WlaSaTy   Návštevník
              rozvinute regularne vyrazy su fajn, ale pri udrrzbe ktoru zabezpecuje viac ako jeden clovek mozu narobit trosku neplechu. najme ak to bude chciet _mierne upravit niekto co neprogramuje :-(
              • Re: Ziednodušenie skryptu 27.03.2007 | 02:17
                Avatar borg Fedora  Administrátor
                ten regularny vyraz neni az taky zlozity, aby sa hned nedal pochopit. myslim ze kto neprogramuje, nech radsej na nic ani v kode nesaha :)
                • Re: Ziednodušenie skryptu 27.03.2007 | 02:40
                  WlaSaTy   Návštevník
                  uz som opravoval zasahy po niekolkych generaciach spravcov pre ktorych nebolo problem skopirovat kus kodu namiesto aby pouzili cyklus, to by si sa len chytal za hlavu. sranda bola ze udrzbu danych zalezitosti mali vtedy na praci oni a ja uz znova nie :-)
                  • Re: Ziednodušenie skryptu 27.03.2007 | 12:03
                    Avatar borg Fedora  Administrátor
                    no myslim ze asi jednuchsie by bolo radsej prepisat dany kod, ak to bol balast :)
                    • Re: Ziednodušenie skryptu 27.03.2007 | 14:00
                      WlaSaTy   Návštevník
                      ano, ja som to tak vtedy vyriesil a dosledky uz napadnu kazdeho :-)
    • Re: Ziednodušenie skryptu 26.03.2007 | 20:52
      Avatar Tomáš Lehocký Lubuntu  Používateľ
      Ďakujem za rady.
      Z toho čo ste napísali som postavil toto:
      (na overenie funkčnosti)

      POMF=`mktemp`
      /sbin/lspci -v > $POMF
      if [ "`egrep 'RV[\d{3}]|RV[\d{4}]|RV[\d{5}]|R[\d{3}]|R[\d{4}]|R[\d{5}]' $POMF`" != "" ]; then
      echo "ok"
      else
      echo "ko"
      fi

      Pozeral som aj man grep ale moc múdry som z toho nebol.....

      čo znamená ten parameter -q? Keď som ho tam dal tak mi to nefungovalo - vypisovalo to ko aj keď by malo ok (RV[\d{3}] je splnené)
      tomolc
      • Re: Ziednodušenie skryptu 26.03.2007 | 21:04
        Avatar borg Fedora  Administrátor
        'R[V?\d{3,}]'
        este kratsie
        • Re: Ziednodušenie skryptu 26.03.2007 | 21:11
          Avatar Tomáš Lehocký Lubuntu  Používateľ
          :-) ďakujem

          a ten parameter -q ( egrep -q ) vo wolf09 reakcii?

          tomolc
          tomolc
          • Re: Ziednodušenie skryptu 26.03.2007 | 21:22
            Avatar borg Fedora  Administrátor
            -q tichy rezim, nic nevypisuje na stdout