Wie der Titel schon sagt. Es wird versucht, ein Array aus der Ausgabe der Zenity-Checkliste zu füllen. Hier ist die Funktion, die ich ausführen möchte, die jedoch fehlschlägt:
function fSongType() {
mType=$(zenity --list --title "Random song list generator" --text "Enter path from which to randomly choose songs:" --width="300" --height="360" --radiolist --column "Pick" --column "Music type" --print-column=2 FALSE All FALSE Baby FALSE Children FALSE "Easy Peasy" FALSE Holiday FALSE Instrumental FALSE "Rock Classics" TRUE "Rock Next Gen" FALSE "Rock Next Gen Heavy" FALSE "Rock Next Gen Light" FALSE "Rock Pop" FALSE Spiritual FALSE Thai|sed -r 's/[ ]{1,}//g') ; echo "\$mType: ${mType}"
# create an array for the output of user checklist input returned to var '$mType"
mTypeAr=()
cntr=0
until [[ -z "$mType" ]] ; do
mTypeAr+=$(echo "$mType"|sed -r 's/^[|]{0,1}([a-zA-Z]*)[|]{0,1}.*$/\1/') ; echo "\$mTypeAri[$cntr]: ${mTypeAr[$cntr]}"
mType=$(echo "$mType"|sed -r 's/^[|]{0,1}[a-zA-Z]*(|.*)$/\1/') ; echo "\$mType: ${mType}"
((cntr++))
done
}
Nachfolgende Terminalausgabe:
${mTypeAr[0]}: Instrumental|RockClassics|RockNextGen|RockClassics|RockNextGen|RockNextGenInstrumentalRockClassics|RockNextGenRockClassicsRockNextGenRockNextGenInstrumentalRockClassics|RockNextGen
$mType: |RockClassics|RockNextGen
${mTypeAr[1]}:
$mType: |RockNextGen
${mTypeAr[2]}:
$mType:
Aus (mir) unbekannten Gründen wird die Ausgabe von zenity dem ersten Element im Array zugewiesen. Wenn ich jedoch die Array-Zuweisung mit der Variable '$ cntr' ändere, werden die Array-Elemente wie erwartet ausgefüllt.
# create an array for the output of user checklist input returned to var '$mType"
mTypeAr=()
cntr=0
until [[ -z "$mType" ]] ; do
mTypeAr["$cntr"]=$(echo "$mType"|sed -r 's/^[|]{0,1}([a-zA-Z]*)[|]{0,1}.*$/\1/') ; echo "\$mTypeAri[$cntr]: ${mTypeAr[$cntr]}"
mType=$(echo "$mType"|sed -r 's/^[|]{0,1}[a-zA-Z]*(|.*)$/\1/') ; echo "\$mType: ${mType}"
((cntr++))
done
Nachfolgende Terminalausgabe:
$mType: Instrumental|RockClassics|RockNextGen
${mTypeAr[0]}: Instrumental
$mType: |RockClassics|RockNextGen
${mTypeAr[1]}: RockClassics
$mType: |RockNextGen
${mTypeAr[2]}: RockNextGen
$mType:
Ich möchte die Variable '$ cntr' und die Echos verlieren, sobald alles wie erwartet funktioniert. Ich bin mir sicher, dass das Problem etwas Offensichtliches ist, das mir fehlt. Aber Hund weg, wenn ich es nicht sehen kann, weil ich es angeschaut habe. Jede Hilfe dankbar.