mzetka3 Napisano Maj 10, 2011 Zgłoszenie Share Napisano Maj 10, 2011 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 More sharing options...
mzetka3 Napisano Maj 11, 2011 Autor Zgłoszenie Share Napisano Maj 11, 2011 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 More sharing options...
3k_PL Napisano Maj 11, 2011 Zgłoszenie Share Napisano Maj 11, 2011 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" 1 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ZepPL Napisano Listopad 23, 2011 Zgłoszenie Share Napisano Listopad 23, 2011 Pozdrawiam! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
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ę