Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 271-280 / 438
  • Szerző
    Bejegyzés
  • #2053449
    uzsolt
    Felhasználó

      Nagy kár 😉
      Biztos meg lehetett volna oldani cut-tal, azzal is próbáltam, de valahogy nem találtam olyasmit, hogy az utolsó ötöt törölje.

      A sed-del most jöttem rá egy egyszerűbb megoldásra (elfelejtettem, hogy $ elé is kell, hogy a sed értelmezze, ne a bash):

      sed -i „s@.{5}$@@g” fájlnév

      ;D

      s: cserére utasítjuk a sed-et
      Első kukacpár között: mit cserélünk
          .{5}: bármilyen karakter, pontosan ötször előfordulva
          $: sor végére igazítva
      Második kukacpár között: mire cserélünk (szerintem erre rájössz 😉 )
      g : globálisan

      Az előző verzió, mint az előbb, csak az első kukacpár között:
      bármi karakter akárhányszor (zárójelbe rakjuk, hogy később tudjunk rá hivatkozni)
      ezután bármi karakter ötször
      Második kukacpár:
      az első kukacpár között legelső zárójelen belül lévő dolgot beírja 1 helyébe

      Tehát:
      abc-gsjhsjs,12.34 esetén az utolsó öt karakter az 12.34 lesz, a 1 értéke pedig az abc-gsjhsjs

      Remélem, sör mellett is bírod követni 😉

      #2053450
      milfer
      Felhasználó

        Sziasztok.
        Pár napja nagyon szívatnak. Adva van egy script amiből kiemelek egy részletet, és megpróbálom megértetni, hogy mi a bajom vele.

        Code:
        GREETING=”jó reggelt”

        find -depth -maxdepth 1 -print0 | while read -d $” infilename; do
        echo $GREETING
          infilename=”${infilename##*/}”
        if ! [ -d „$infilename” ]; then
            GREETING=”jó napot”;
          case
          itt a casenak megfelelően több functiont hív meg (ugyanebből a scriptből)
          esac
        fi # infilename ! -d
        done

        echo $GREETING

        Ha azt feltételezem, hogy a while ciklus háromszor fut le akkor ezt az eredményt kapom:
        jó reggelt
        jó reggelt
        jó napot
        jó napot
        jó napot
        jó reggelt

        Amikor véget ér a ciklus miért jó reggelt a GREETING értéke, mikor „felülírtam” egy jó napottal.
        A „find” vagy a „read” egy külön shell-ben fut ? Azért nem őrzi meg a változó az értékét, vagy miért ? Nem értem.

        #2053451
        ELaci
        Felhasználó

          Elképzelhető (majdnem biztos) hogy a GREETING változók nem ugyanazok a különböző helyeken.
          Én megpróbálnám ez első sorban ezt: export GREETING=”jó reggelt”

          EL

          #2053452
          milfer
          Felhasználó

            Nem megy exporttal sem.

            #2053453
            pointux
            Felhasználó

              A „jó napot” egyszerűen lokális lesz. (A legegyszerűbb, ha file-ba mented… akkor tuti nem lesz az. Vagy megoldod külső futtatás nélkül nélkül: a progi a ciklusban és | nélkül fusson… aszem a | is elég neki.)

              #2053454
              elnoyle
              Felhasználó

                sziasztok!

                nekem egy olyan kódrészletre lenne szükségem, ami echo -val egy adott fájl utolsó sorába ír

                pl.: ha beírom ezt:

                Code:
                echo 1 > test.txt

                akkor a test.txt legvégére rakjon egy 1 est, mert nekem alapértelmezésképp felülírja az egész fájlt.

                köszi
                üdv, elno 

                #2053455
                milfer
                Felhasználó
                  elnoyle wrote:
                  sziasztok!

                  nekem egy olyan kódrészletre lenne szükségem, ami echo -val egy adott fájl utolsó sorába ír

                  pl.: ha beírom ezt:

                  Code:
                  echo 1 > test.txt

                  akkor a test.txt legvégére rakjon egy 1 est, mert nekem alapértelmezésképp felülírja az egész fájlt.

                  köszi
                  üdv, elno 

                  Csak ennyi kell? 1.gif

                  Code:
                  echo 1 >> test.txt
                  #2053456
                  elnoyle
                  Felhasználó

                    nagyonszépen köszönöm:)
                    és még egy hasonló kódra lenne szükségem, ami a következőt csinálja:

                    van egy mappa amiben soksok lefuttatni való parancs van.
                    nekem egy oylan megoldás kéne, ami egyetélen szkript futtatásával ezt az összeset elinditja.
                    tehát valami hasonló hogy /home/én/futtatni/*.
                    és így lefut minden szkript ami futtatható a /home/én/futtatni könyvtárban.

                    köszi

                    #2053457
                    zoltan22
                    Felhasználó

                      ilyesmi:

                      Code:
                      for i in /home/én/futtatni/* ; do /home/én/futtatni/$i & ; done

                      ?

                      (vagy lehet egyszerubben?)

                      #2053458
                      elnoyle
                      Felhasználó

                        -bash: syntax error near unexpected token `do’

                        ezt a választ kapom:S 

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