Ich suchte überall hin, aber die Begriffe sind anscheinend zu allgemein. Ich schreibe ein Skript, um eine Gruppe von Ordnern nach MP3-Dateien zu durchsuchen. Einige Ordner haben keine MP3s, daher müssen sie ausgeschlossen werden.Bash-Array-Zahl gibt immer 1
Ich erstellte ein Array, um die uniq'd Ordnernamen zu halten. Dieser Suchbefehl erhält die benötigten Ordner.
Folders=$(sudo find /my/music/ -type f -name "*.mp3" | cut -d'/' -f7 | sort -u)
Wenn ich versuche, die Anzahl der Ordner in dem Array zu zählen, habe ich immer 1
echo ${#Folders[@]}
echo ${Folders[@]}
druckt sie aus auf separaten Zeilen so dachte ich, dass sie getrennte Array-Elemente waren . Kann mir jemand erklären, was vor sich geht? Möglicherweise müssen Sie die Feldnummer im Schnittbefehl wackeln, um lokal zu reproduzieren.
Wo haben Sie das Array erstellt? 'Folders = $ (...)' erstellt kein Array ... – twalberg
Wenn Ihr Pfad Leerzeichen oder Glob-Zeichen enthalten kann, ist das Erstellen eines Arrays mit Befehlsersetzung nicht sicher. – anubhava
@ twalberg - danke! Das war mein erstes Missverständnis. Und ich weiß es auch besser! – LHWizard