Skocz do zawartości

[Bash]Wyszukiwanie Mp3 Po Tag


mzetka3

Rekomendowane odpowiedzi

Witam,

Dopiero ucze sie basha wiec prosilbym mnie nie linczowac. ;) Próbuje napisac skrypt w bashu który umozliwi wyszukiwanie mp3. Chcialbym uzyc getopts'a by móc np. wyszukiwac jednoczesnie plików spelniajacych kryteria: artysta, album, nazwa piosenki etc. próbuje to zrobic w taki sposób:

                                                                             
#!/bin/bash                                                                                                                  

find /home/Mateusz/Pulpit/Soundtrack/ -type f -iname \*.mp3 | while read -r line ; do                                                                                                         

   katalog=${line%/*} #Zapisuje Sciezke pliku                                                                               
   name=${line##*/}     #Zapisuje nazwe pliku                                                                               
   cd "$katalog"

  while getopts ab OPT
  do

       case $OPT in
            a) id3info "$name" | grep "TPE1" | grep "Eminem" && id3info "$name" ;; #Wyszukiwanie wedlug wykonawcy \
i wyswietlenie wyniku;;                                                                                                      
 echo "LOL";; #
           *) echo "HEH";;
       esac
   done
done

 

Z góry dziekuje za pomoc!

 

 

EDIT

Juz sobie poradzilem. Problem tkwil w potoku ;) zrobilem to tak:

                                                                             
#!/bin/bash                                                                                                                  

find /home/Mateusz/Pulpit/Soundtrack/ -type f -iname \*.mp3 | while read -r line ; do                                                                                                         

   katalog=${line%/*} #Zapisuje Sciezke pliku                                                                               
   name=${line##*/}     #Zapisuje nazwe pliku                                                                               
   cd "$katalog"

  id3info "$name" | while getopts ab OPT
  do

       case $OPT in
            a)  grep "TPE1" | grep "Eminem" && id3info "$name" ;; #Wyszukiwanie wedlug wykonawcy \
i wyswietlenie wyniku;;                                                                                                      
 echo "LOL";; #
           *) echo "HEH";;
       esac
   done
done

Odnośnik do komentarza
Udostępnij na innych stronach

No to nadzialem sie na kolejny problem jest to problem z opcjami gdyz getopts wykonuje kazda opcje osobno. :( Chcialbym zrobic cos takiego:

while getopts ab OPT
do
 case $OPT in
          a)grep "^=== TPE1" | sed -e 's/.*: //g' | grep "^$2" && id3info "$name"  ;; #Wyszukiwanie wedlug w\
ykonawcy i wyswietlenie wyniku                                                                                             
 grep "^=== TIT2" | sed -e 's/.*: //g' | grep "^$3" && id3info "$name" ;; #Wyszukiwanie wg. nazwy piosenki
          *) echo "HEH";;
      esac
  done

 

Chcialbym aby przy wybraniu opcji -ab zostaly opcje ab zostaly wykonywane jako jedna calosc. Czy istnieje taki sposób by nie wykonywac tego na if? :)

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Rozwiązanie na szybko:

Nie wykonuj od razu polecenia w case tylko modyfikuj sobie jakieś zmienne, a po zebraniu wszystkich opcji wykonaj case/if zgodne z tymi zmiennymi.

 

case $OPT in
          a) zmienna1="1"                                                                                           
 zmienna2="1"

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • 6 months later...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...