Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 201-210 / 438
  • Szerző
    Bejegyzés
  • #2053379
    ELaci
    Felhasználó

      Próbáld így: „‘”$provider”‘”
      Az idézőjelek szóközökkel, mert félreérthető a fenti: ” ‘ „$provider” ‘ „

      Teszt: echo „a=1” |awk ‘{print „‘”$a”‘”}’
      eredmény: 1

      ELaci

      #2053380
      lada2105
      Felhasználó

        ${$provider} ?

        #2053381
        uzsolt
        Felhasználó

          Tehát ha jól értem, akkor a $változó változóban lévő szöveget akarod, mint parancsot kiadni. Ha igen, akkor próbáld eval $változó módon!

          #2053382
          supervazi
          Felhasználó

            Kösz a segítséget. így oldottam meg:

            Az adatbázis „query” mezőjében ez van:

            select count(*) from products where provider={replaceme} and avail=’0′;

            A script pedig:

            Code:
            for provider in ${providers[@]}; do
                query_=${query/”{replaceme}”/”$provider”}
                val=`echo $query_ | mysql -N stats`
                echo „$provider, $val”
            done

            Ez azért is jobb (az én szempontomból), mert a {replaceme} sablont masként is fel tudom használni és az adatbázis kitöltésekor, nem kell tudni a scriptben lévő változó nevét.

            Kösz,

            vazi

            #2053383
            azsem
            Felhasználó

              Sziasztok!
              Olyat lehet hogy egy parancsot akarok várakoztatni 1 óra hosszat, és csak mikor letelt akkor végrehajtani?
              Pl:
              Echo „indul az óra!”
              Ide jönne a parancs
              Echo „Letelt az időd!”

              Persze nem ez a végső script 😀 csak hogy érthető legyen mit akarok.

              #2053384
              admin
              Adminisztrátor

                Echo „indul az óra!”
                sleep aztidopasodpercben
                Echo „Letelt az időd!”

                #2053385
                azsem
                Felhasználó

                  Köszönöm!

                  #2053386
                  retaliator44
                  Felhasználó

                    Van itt egy saját barkácsolású script, elvileg egy tracklistnek megfelelően nevezne át csak track01-xx-ként jelzett számokat. A kérdés, hogy mivel tudnám azt a csúnya nagy zárójelet az első pipe után kiváltani? (azért van rá szükség mert a pipe külön processként megy és a létrehozott name tömb nem exportálható)

                    Code:
                    #!/bin/bash
                    track=0;
                    i=0;
                    mkdir result 2>/dev/null
                    cat oceanborn.tag|(while read
                    do
                      i=$(($i+1))
                      name[$i]=$REPLY
                    echo ${name[i]}
                    done

                    for fn in *
                    do
                      if [[ `echo „$fn” | grep „.flac”` != „” ]]
                      then
                        track=$(($track+1))
                        echo „$fn”
                        echo „$track – ${name[$track]}.flac”
                        mv „$fn” „result/$track – ${name[$track]}.flac”
                      fi
                    done)

                    A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?
                    Előre is köszönöm.

                    #2053387
                    pointux
                    Felhasználó

                      „A kérdés, hogy mivel tudnám azt a csúnya nagy zárójelet az első pipe után kiváltani? (azért van rá szükség mert a pipe külön processként megy és a létrehozott name tömb nem exportálható)”
                      LIST=`cat …`

                      „A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?”
                      A „favágó módszer” tökéletes… főként, ha valami behatárolt karaktersorról van szó pl. 1-5-ig.
                      De, ha 00XYZ, ahol XYZ=0…9…F, akkor arra ott a printf.

                      #2053388
                      uzsolt
                      Felhasználó

                        „A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?”
                        Tökéletes a favágás, de az annyira nem elegáns, hogy még kettőre se szabad megírni 🙂

                        Szóval, printf nélkül: megnézed, hogy kisebb-e, mint 10.

                        Code:
                        if [ $track -ge 10 ]; then
                                TrackNr=$track
                        else
                                TrackNr=0+$track
                        fi

                        Ha 2 nullát akarsz, akkor legelőször még egy nagyobb-e, mint száz, majd elif nagyobb-e, mint 10, stb.

                        Amúgy nem lehetne ezt a szkriptet egyszerűbben megoldani? Igaz, most nincs kedvem filózni rajta, de szerintem igen…

                        [red]Szerk[/red].: akarva akaratlan, csak filózok rajta. Szóval lényegében azt csinálod, hogy az összes flac kiterjesztésű fájlon végiglibbensz ABC-szerint, és sorrendben adod egy más fáljban tárolt neveket. Van egy progi, amelyet úgy hívnak, hogy paste.
                        Pont ezt csinálja (tehát az egyik fájl n. sora mellé kiírja a másik fájl n. sorát).

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