Freitag, 25. Mai 2012, 18:04

Du bist nicht angemeldet.



ezazazel

The Supporter

  • »ezazazel« ist der Autor dieses Themas

Beiträge: 719

Ubuntu: 11.10

Kernel: 3.0.0-14-generic

Architektur: 32-bit

  • Private Nachricht senden

1

Sonntag, 12. September 2010, 21:12

id3info grep Genre wirft unary error

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

find /srv/files/audio -name "*.mp3" -printf "%f:%h\n" | while IFS=":" read NAME PATH

do
GENRE="`/usr/bin/id3tool "$PATH/${NAME}" | /bin/grep '^Genre:' | /usr/bin/awk '{ print $2 }' | /usr/bin/awk -F' \(0x' '{print $1}' |/bin/sed 's/\\s*\(.*\)/\$
#GENRE="`/usr/bin/id3tool "$PATH/${NAME}" | /bin/grep -i '^Genre:' | /bin/sed 's/^Genre:[ \t]\+//i'| /bin/sed 's/ ([x0-9A-F]\+)$//'`"
#GENRE=(" `/usr/bin/id3tool "$PATH/${NAME}" | /bin/grep 'Genre:' | /usr/bin/awk '{ for (i=2;i<=NF;i++) { printf $i } }' | /bin/sed 's/^.*\t//'`")

echo ${GENRE}
       if [ ${GENRE:0:10} = "Progressive" ]; then
               echo $PATH/${NAME} >> /home/server/prog.txt
       fi

       if [ ${GENRE:0:5} = "Folk" ]; then
              echo $PATH/${NAME} >> /home/server/folk.txt
       fi

       if [ ${GENRE:0:5} = "Rock" ]; then
               echo $PATH/${NAME} >> /home/server/rock.txt
       fi

       if [ ${GENRE:0:5} = "Metal" ]; then
               echo $PATH/${NAME} >> /home/server/metal.txt
        fi

       if [ ${GENRE:0:5} = "Blues" ]; then
                echo $PATH/${NAME} >> /home/server/blues.txt
        fi

done;


wirft mir folgenden Fehler:

Zitat

./byGenre: Zeile 13: [: =: Einstelliger (unärer) Operator erwartet.
./byGenre: Zeile 17: [: =: Einstelliger (unärer) Operator erwartet.
./byGenre: Zeile 21: [: =: Einstelliger (unärer) Operator erwartet.
./byGenre: Zeile 25: [: =: Einstelliger (unärer) Operator erwartet.
./byGenre: Zeile 29: [: =: Einstelliger (unärer) Operator erwartet.


Das Ganze funktioniert wenn das Genre kein Leerzeichen enthält, sonst aber icht.
Kann mir bitte jemand helfen?
Si non confectus, non reficiat (If it's not broken, don't fix it)
Shuttle XPC SD39P2; Intel Core2Duo 6420; Samsung T166 SATA II 3,5" 500GB; Gainward Bliss 8600GT PCX SilentFx, Cinergy T USB XS hybrid && MSI Wind Nettop && Toshiba Portege M700 && Acer Aspire One

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ezazazel« (15. September 2010, 08:12)


5e4n

hat hier 2. Wohnsitz.

Beiträge: 442

Ubuntu: ---

Desktop: ---

Architektur: ---

  • Private Nachricht senden

2

Montag, 13. September 2010, 10:33

Hi ezazazel,

ich denke das Problem liegt darin, dass Leerzeichen als "\ " angegeben werden müssen...

Vielleicht kannst Du hier mit sed weitergucken, bspw. mit:

Quellcode

1
/bin/sed -i 's/ /\ /g'


Ist aber ungetestet und Du müsstest wohl ausprobieren, wo Du es hinpacken müsstest... der Code müsste eigentlich alle Leerzeichen mit \Leerzeichen (als Zeichen, nicht als Wort ;)) ersetzen.

Hoffe, dass ich hier grad keinen Mist verzapft habe ;)

haliner

hat hier 2. Wohnsitz.

Beiträge: 423

Ubuntu: ---

Kernel: 2.6.39-ARCH

Desktop: KDE

Architektur: ---

  • Private Nachricht senden

3

Montag, 13. September 2010, 16:22

Du sollteste die Variablen in doppelte Anführungszeichen setzen, damit die Werte der Variable auch wirklich als ein einziger Parameter gewertet werden.

Quellcode

1
2
3
4
# statt
$foo
# besser
"$foo"


Die letzte Variante ist meist die, die man möchte. Erstere kann man natürlich in den wenigen Fällen verwenden, wo man das Verhalten wirklich benötigt.

Gruß, Stefan

ezazazel

The Supporter

  • »ezazazel« ist der Autor dieses Themas

Beiträge: 719

Ubuntu: 11.10

Kernel: 3.0.0-14-generic

Architektur: 32-bit

  • Private Nachricht senden

4

Mittwoch, 15. September 2010, 08:11

Unary Expression

Danke für Eure Hilfe! Bin nun dahintergekommen, dass es mit einer Einschränkung von id3tool zu tun hat.
Genre ist nämlich ein Enum, kann daher eigene Genres gar nicht anzeigen. Ergo unary expression expected bei allen Genres, welche nicht im enum von id3tool vorhanden sind. Und das sind leider sehr viele. Mal sehen wie ich das sonst noch lösen kann.
Si non confectus, non reficiat (If it's not broken, don't fix it)
Shuttle XPC SD39P2; Intel Core2Duo 6420; Samsung T166 SATA II 3,5" 500GB; Gainward Bliss 8600GT PCX SilentFx, Cinergy T USB XS hybrid && MSI Wind Nettop && Toshiba Portege M700 && Acer Aspire One