Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 11 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-05-23-14:00 #2053219
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
2006-05-23-14:38 #2053220bitrata=65
if [ $bitrata -gt 64 ]; then
echo „Kodolok!”
else
echo „Nem kodolok!”
fi2006-05-23-17:15 #2053221‘$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++ )).2006-05-25-06:23 #2053222Nagyon köszi mindkettõtöknek, este (ha az idõm engedi) folytatom!
2006-05-29-12:39 #2053223Sziasztok! 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…2006-05-29-12:46 #2053224Ja, még annyi, hogy xterm-en próbáltam….
2006-05-29-15:47 #2053225Ha van /etc/bashrc akkor oda kell betenni a plusz PATH -ot, ha meg nincs akkor ~/.bashrc -be: PATH=$PATH:/plusz/utvonal
ELaci
2006-05-29-18:27 #2053226Az 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.
2006-05-30-06:30 #2053227Nem 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:
2006-05-30-08:47 #2053228 -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.

legutóbbi hsz