Ich bin in Schwierigkeiten: mein Skript funktioniert nicht wie erwartet :)
Teil meines Codes:
readarray operations < operations.list
### lalala
for ((i=0; i<${#operations[@]}; i++)); do
echo "Perform ${operations[$i]}"
case ${operations[$i]} in
"dog rex" )
command1 & ;;
"cat sam" )
command2 & ;;
* )
command3 ;;
esac
done
Operations.list- Datei sieht aus wie
dog rex
cat sam
frog mike
monster jack
Ich erwarte, dass Command1 , Command2 und Command3 im Hintergrund ausgeführt werden müssen, aber es ist nicht. Was mache ich falsch?
Vielen Dank im Voraus und sorry für mein Englisch :)
Antworten:
Es funktioniert nicht, weil die Elemente Ihres Arrays dog \ n cat \ n, frog \ n, monster \ n sind . Also Ihr Fall sollte Aussage sein:
Streng genommen halte ich es für eine schlechte Idee, die Möglichkeit auszuschließen, dass eine unschuldige Seele nach jedem Eintrag ein oder zwei Leerzeichen fallen gelassen hat, so dass ich lieber Folgendes verwenden würde:
aber dann YMMV.
quelle