Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 41-50 / 438
  • Szerző
    Bejegyzés
  • #2053219
    zLegolas
    Felhasználó

      Sziasztok!

      Feladat:
      szeretném egy mp3 mappa alkönyvtárainak tartalmát konvertálni 64kbps-be (szöveges anyag, zene nuku, így ez is optimális az mp3 lejátszóhoz…)
      Az lenne e jó, ha csak akkor kezdene dolgozni az átkódoló, ha az mp3 fájl rátája nagyobb, mint 64kbps, az ezzel megegyezõ vagy kisebb állományok maradnának változatlanul.

      Nos, elkezdtem de el is akadtam. A következõ a helyzet:


      for i in *.mp3;
      do
      bitrata=`mp3info -x $i | grep ”Audio” | cut -c14-15`
      echo ”A bitrata: $bitrata”
      if (”$bitrata” > ”64”);
      then echo ”Kodolok!”
      else echo ”Nem kodolok!”
      fi

      A gondom az, hogy nem tudtam rájönni, hogy az if részben az értékek összehasonlítása (és az ennek megfelelõ elágazás) korrektül megtörténjen. Szerintem valami szintaktikai probléma lesz…
      (A $bitrata-t kiiratva korektül megjelenik pl. a 64)

      Hálás lennék, ha valaki megokosítana

      #2053220
      juuzer
      Felhasználó

        bitrata=65
        if [ $bitrata -gt 64 ]; then
            echo „Kodolok!”
            else
            echo „Nem kodolok!”
        fi

        #2053221
        pointux
        Felhasználó

          ‘$bitrata” > ”64” – ez meg stringet hasonlít össze, aminek gí nem sok értelme van – legfeljebb így „” == „” (ugyan azt hiszem, hogy a ‘(” a ‘[‘ helyett meg nem engedett, de nem biztos.)

          Ahogy juuzer írta az jó. (Bár így speciel a feltétel mindig igaz.)
          Mûvelet esetén viszont $[$[bitrata]+1] így kell használni. A $[] szintaktika a számot jelenti. Bár ez a mûvelet egyszerûen így is elvégezhetõ (( bitrata++ )).

          #2053222
          zLegolas
          Felhasználó

            Nagyon köszi mindkettõtöknek, este (ha az idõm engedi) folytatom!

            #2053223
            sipdav
            Felhasználó

              Sziasztok! Nem akarok emiatt külön topikot nyitni – talán nem annyira irreleváns a kérdés, hiszen a körny változókat gyakran használjuk bash progiknál…
              Az a problémám (Debian Sarge – X), hogy az /etc/profile -ban beállított környezeti változók (és kiegészített PATH) csak root számára elérhetõk. Hogy lehet a többi user számára is lekérdezhetõvé tenni ezeket?
              Az /etc/profile – ban ugye van egy bash script, ami lekérdezi az aktuális uid-et – ez alapján megkülönböztetve, hogy root-e a feljhasználó. Ennek megfelelõen a PATH-ot az if és az else ágban is ki kell egészíteni. Megtettem. A root eléri, de a normál user nem…

              #2053224
              sipdav
              Felhasználó

                Ja, még annyi, hogy xterm-en próbáltam….

                #2053225
                ELaci
                Felhasználó

                  Ha van /etc/bashrc akkor oda kell betenni a plusz PATH -ot, ha meg nincs akkor ~/.bashrc -be: PATH=$PATH:/plusz/utvonal

                  ELaci

                  #2053226
                  sipdav
                  Felhasználó

                    Az a furcsa, hogy X nélkül minden oké. Egyedól az xterm nem kapja meg a változókat. Ha berakom a .bash_profile – ba akkor valóban mûködik.

                    #2053227
                    uzsolt
                    Felhasználó

                      Nem pont így van. Ui. a profile és a bashrc között van egy apró különbség: az egyik csak akkor hajtódik végre, amikor ténylegesen bejelentkezel, viszont ha csak egy xterm-et indítasz (tehát nem új login jelszóval meg mindenféle nyavajával), akkor nem. Hogy melyik mikor fut le, mindig keverem (man bash), de egy huszárvágással megoldottam: szimlink egyikrõl a másikra  :poketoungeb:

                      #2053228
                      sipdav
                      Felhasználó
                      10 bejegyzés megtekintése - 41-50 / 438
                      • Be kell jelentkezni a hozzászóláshoz.