Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 411-420 / 438
  • Szerző
    Bejegyzés
  • #2053589
    dotmind
    Felhasználó

      Felizgatott a problema es irtam egy kis quick-and-dirty scriptet a dologra. Otletet meriteni lehet, hogy jo lesz.

      #!/bin/bash
      for i in `cat /etc/group`; do
          group=`echo $i | cut -d „:” -f 1`
          gid=`echo $i | cut -d „:” -f3`
          usr_number_grp=`echo $i | cut -d „:” -f4 | tr „,” „n” | grep -v ^$ | wc -l`
          usr_number_pwd=`cat /etc/passwd | cut -d „:” -f 4 | grep ^$gid$ | wc -l`
          echo „group: $group    user number: $(expr $usr_number_grp + $usr_number_pwd)”
      done

      #2053590
      pointux
      Felhasználó
        dtk1985 wrote:
        bocs, en fogalmaztam felre. ugy ertettem hogy, az /etc/group-ban csak masodlagos hozzarendelesek vannak. /etc/passwd-ben a felhasznalonak van egy default groupja, oda ha jol tudom csak 1 group kerulhet felhasznalokent. az /etc/group-ban pedig meeg hozzaadhatunk felhasznalokat (amelyek rendelkeznek mar egy default grouppal) a csoportokhoz.
        vegulis felesleges az egesz mert en csak az /etc/grouppal fogok foglalkozni a scriptben, meg ha igy nem is kapok hiteles informaciokat. tanar valoszinu elnezett valamit es nem szamolt vele hogy ez nem oldhato meg olyan egyszeruen.

        Értem már, hogy mit mondasz: ha az alapértelmezett csoport csak a passwd-ben van és ott is csak számmal.

        #2053591
        pointux
        Felhasználó
          dotmind wrote:
          Felizgatott a problema es irtam egy kis quick-and-dirty scriptet a dologra.

          Mikre nem izgulnak az emberek! :)))
          Amúgy első ránézésre jónak tűnik. 🙂

          #2053592
          milfer
          Felhasználó

            Hello.
            Lenne egy kérdésem, amire eddig nem találtam megoldást.
            Van egy pipe amiből az első program visszatérési értékét szeretném kiolvasni.
            Tehát, hogy értsétek miről van szó itt egy példa:

            Code:
            `ls /dir1 2>&1 | tee out.txt`

            Ha ezután lekérdezem a „$?” változót természetesen nulla lesz, mivel a „tee” parancs hiba nélkül lefutott. De nekem az „ls” visszatérési értéke kellene.

            #2053593
            uzsolt
            Felhasználó

              Hirtelen ez jut eszembe:

              Code:
              (ls /dir1 2>&1 ; LS_RETURN=$?) | tee out.txt

              És ott lesz az LS_RETURN-ben az értéked, amivel azt csinálsz, amit akarsz 😉

              #2053594
              milfer
              Felhasználó
                uzsolt wrote:
                Hirtelen ez jut eszembe:

                Code:
                (ls /dir1 2>&1 ; LS_RETURN=$?) | tee out.txt

                És ott lesz az LS_RETURN-ben az értéked, amivel azt csinálsz, amit akarsz 😉

                Kösz.
                Most nem vagyok linux közelbe  >:( de biztos jó.
                Én így próbáltam:

                Code:
                ls /dir1 2>&1 LS_RETURN=$? | tee out.txt

                és így nem működött.
                Nem volt zárójel meg pontosvessző.

                #2053595
                uzsolt
                Felhasználó
                  Code:
                  $ ls /dir1 2>&1 LS_RETURN=$?
                  ls: /dir1 nem érhető el: Nincs ilyen fájl vagy könyvtár
                  ls: LS_RETURN=0 nem érhető el: Nincs ilyen fájl vagy könyvtár

                  Azaz: az LS_RETURN=$? részt is az ls kapja meg paraméterként. Ezért kell a pontosvessző, hogy egy külön parancs legyen.
                  Zárójel: azért kell, hogy ne az LS_RETURN=$? parancs hatalmas kimenete kerüljön az out.txt fájlba a tee parancs révén.

                  #2053596
                  milfer
                  Felhasználó

                    Korai volt az öröm.

                    Itt még van értéke a WROK változónak:

                    Code:
                    $COMMAND 2>&1; WROK=$?

                    De igy már nincs.  //zárójel//

                    Code:
                    ($COMMAND 2>&1; WROK=$?)

                    És igy sincs ,

                    Code:
                    $COMMAND 2>&1; WROK=$? | tee out.txt

                    és igy se.

                    Code:
                    ($COMMAND 2>&1; WROK=$?) | tee out.txt
                    #2053597
                    uzsolt
                    Felhasználó

                      Valóban. Mert ez egy al-shellt nyit. Ha más nem, akkor egy echo $? parancsot raksz a zárójelbe, ami szintén megy az out.txt-be. Vagy azt átküldöd az stderr-re, és akkor csak kinyomtatódik…

                      #2053598
                      pointux
                      Felhasználó

                        Pipe után a változók értéke sajnos törlődik. Ill. az egész változó, amit esetleg újra lehet definiálni, de a nulláról indul. (Legcélszerűbb egy memóriában lévő file-ba kiküldeni… akkor gyors és meg is marad.)

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