Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 101-110 / 438
  • Szerző
    Bejegyzés
  • #2053279
    MajorosAndras
    Felhasználó

      Sziasztok!

      A következőben szeretném a segítségeteket kérni. If-el szeretném az első argumentumról eldönteni, hogy szám-e (ha szám függvény1 különben függvény2)?

      #2053280
      uzsolt
      Felhasználó

        Milyen formájú is egy szám?
        Ha ez megvan, akkor egy gyors tesztelés, és kész. Tehát mondjuk:

        Code:
        if [ `expr match $1 ‘[0-9]*’` -eq `expr length $1` ]; then
            echo „Szám”
        else
            echo „Nem szám”
        fi

        Eredmény:

        zsolt:~$ teszt x
        Nem szám
        zsolt:~$ teszt 12
        Szám
        zsolt:~$ teszt 12a
        Nem szám
        zsolt:~$ teszt a1s2a
        Nem szám

        Remélem, erre gondoltál…

        Szerk.: előtte azért egy vizsgálat nem árt, hogy az első paraméter létezik-e.

        #2053281
        MyCroft
        Felhasználó

          Vagy esetleg:

          Code:
          if [ ! `expr $1 + 0 2>/dev/null` ]

          Csak győzz válogatni 🙂 (Ja és itt is előbb ellenőrizni kell, hogy van-e $1)

          #2053282
          uzsolt
          Felhasználó
            MyCroft wrote:
            Vagy esetleg:

            Code:
            if [ ! `expr $1 + 0 2>/dev/null` ]

            Jaj, ez olyan alávaló 🙁 Semmi elegancia, semmi szépség…
            Persze az első gondolatom nekem is ez volt (legalábbis ezen alapuló 😉 ), de inkább kb. két perc alatt összehoztam meg „teszteltem” a verziómat.

            #2053283
            MajorosAndras
            Felhasználó

              Nagyon szépen köszönöm a segítséget mindenkinek, müködik.

              #2053284
              retaliator44
              Felhasználó

                A következő lenne a kérdésem:
                a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
                ls -l|sed s/[0-9]{1,2}//
                ls -l|sed s/[0-9]+//
                Előre is köszi.

                #2053285
                MyCroft
                Felhasználó
                  retaliator44 wrote:
                  A következő lenne a kérdésem:
                  a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
                  ls -l|sed s/[0-9]{1,2}//
                  ls -l|sed s/[0-9]+//
                  Előre is köszi.

                  Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
                  ls -l | sed „s/[0-9]/{1,2}//”

                  A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
                  ls -l | sed „s/[0-9]+//”

                  #2053286
                  budacsika
                  Felhasználó
                    retaliator44 wrote:
                    A következő lenne a kérdésem:
                    a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
                    ls -l|sed s/[0-9]{1,2}//
                    ls -l|sed s/[0-9]+//
                    Előre is köszi.

                    Szia!
                    Nem túl legáns, de működik. (nálam bizos)
                    ls -l | cut -d ” ” -f 1,4,5,6,7,8

                    #2053287
                    retaliator44
                    Felhasználó
                      MyCroft wrote:
                      Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
                      ls -l | sed „s/[0-9]/{1,2}//”

                      A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
                      ls -l | sed „s/[0-9]+//”

                      Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?

                      Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
                      ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
                      akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni?  Mert csak úgy simán úgy látom, nem megy. Még akkor sem, ha az egészet ‘-ba rakom. A benti ‘-t meg nem tudom levédeni -sel, mert ugye kimenet és asse tudom mi lesz a várható értéke.

                      #2053288
                      MyCroft
                      Felhasználó
                        retaliator44 wrote:
                        MyCroft wrote:
                        Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
                        ls -l | sed „s/[0-9]/{1,2}//”

                        A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
                        ls -l | sed „s/[0-9]+//”

                        Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?

                        Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
                        ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
                        akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni?

                      10 bejegyzés megtekintése - 101-110 / 438
                      • Be kell jelentkezni a hozzászóláshoz.