#!/bin/bash
CURRENT=`mpc current | sed -e "s/\([^-]\+\) - .*/\1/"`
for ((;;));
do
CHECK=`mpc current | sed -e "s/\([^-]\+\) - .*/\1/"`
if [ "${CHECK}" = "${CURRENT}" ]; then
mpc next
else
break
fi
done
A szépsége az egyszerűségében rejlik, és körülbelül itt ki is fújt. A végtelen ciklusokat nem szeretem, főleg, hogy ez egy előadós lejátszólistánál ki se lépne ;) Ráadásul mindig az mpc-t hívogatja, és egyesével ugrál végig a listán, ami egy diszkográfia esetében, khm, szuboptimális. Ennek a shellscriptnek nem szabadna pár másodpercnél tovább futnia, mert akkor már nem érdemes használni.
Sokáig a todo listámon volt a kijavítása, már gondolkoztam azon is, hogy talán C-ben írom meg libmpd-vel (vagy inkább pythonban, mert úgy hamarabb végzek). De azért nekiugrottam megint shellsciptben, miután jobban körbeszaglásztam a lehetőségek terén.
Ez több problémát orvosol. Például az mpc -f kapcsolóját használva meg tudja oldani, hogy csak az előadót nézze, így nem kellett regexppel kiszedni, ami hibás eredményt is adhatna. A sorszámra meg a lejátszólista hosszára sajnos nem találtam ilyen okosságot, oda maradt a regexp (ami viszont ebben az esetben nem téved)
Ezen kívül nem case sensitive, és nem hívja meg annyiszor az mpc-t, mint ahányszor a másik tehetné :)
Persze nem szép, úgyhogy aki velem ellentétben okosember bashből, kérem javítson ki.
- a lowercase konverzió szerintem elég csúnya. Van erre valami kulturált módszer seddel?
- van rá valami mód, hogy a bash csak a sortörések mentén bontsa tokenekre az adatot? Szerintem nem szép seddel alulvonásra cserélni a szóközöket.
- numen blogja
- A hozzászóláshoz be kell jelentkezni
- 608 megtekintés
Hozzászólások
Épp erre van most szükségem, köszi.
- A hozzászóláshoz be kell jelentkezni