Finde den Fehler im bash Skript nicht
Hallo Kollegen,
ich möchte ein bash Skript bauen, dass dem Nutzer mit zenity einen Dialog anzeigt aus dem er die abzuspielende Musik auswählen kann.
Das funktioniert alles auch, solange vlc schon läuft.
Dann wird vlc gekillt und die neue Playlist gestartet.
Jetzt versuche ich beim ersten Aufruf zu prüfen ob vlc schon läuft und wenn nicht, den killall Befehl zu überspringen.
Allerdings bekomme ich hierbei eine Fehlermeldung:
Kann mir hier jemand einen Tipp geben, wo der Fehler liegen könnte?
Ich habe keine Idee mehr.
Danke schon mal.
Grüße vom it-frosch
Lösung:
Bei der einzeiligen Schreibweise müssen alle Teile des Befehls mit ; abgeschlossen werden
Also so:
if [ "$BEFEHL" = musik-01 ]; then if [[ -z "$a" ]]; then cvlc --random /home/user/mp3; else killall vlc && cvlc --random /home/user/mp3; fi
Dann funktioniert es auch mit if - then - else und der Abfrage.
ich möchte ein bash Skript bauen, dass dem Nutzer mit zenity einen Dialog anzeigt aus dem er die abzuspielende Musik auswählen kann.
Das funktioniert alles auch, solange vlc schon läuft.
Dann wird vlc gekillt und die neue Playlist gestartet.
#!/bin/bash
BEFEHL=$(zenity --height=400 --list --radiolist --title="Musik auswählen" --text="Gewünschten Eintrag anklicken und mit OK betätigen" --column="Auswahl" --column="Musik" TRUE Musik_ausschalten FALSE musik-01 FALSE musik-02)
# Prüfen ob vlc läuft
a=$(pidof vlc)
# Playlist auswählen
PARAM=""
if [ "$BEFEHL" = musik-01 ]; then killall vlc && cvlc --random /home/user/mp3
elif [ "$BEFEHL" = musik-02 ]; then killall vlc && cvlc --random /home/user/mp3/Sicherung_USB
elif [ "$BEFEHL" = Musik_ausschalten ]; then killall vlc
fi
Jetzt versuche ich beim ersten Aufruf zu prüfen ob vlc schon läuft und wenn nicht, den killall Befehl zu überspringen.
#!/bin/bash
BEFEHL=$(zenity --height=400 --list --radiolist --title="Musik auswählen" --text="Gewünschten Eintrag anklicken und mit OK betätigen" --column="Auswahl" --column="Musik" TRUE Musik_ausschalten FALSE musik-01 FALSE musik-02)
# Prüfen ob vlc läuft
a=$(pidof vlc)
# Playlist auswählen
PARAM=""
if [ "$BEFEHL" = musik-01 ]; then if [[ -z "$a" ]]; then cvlc --random /home/user/mp3 else killall vlc && cvlc --random /home/user/mp3 fi
elif [ "$BEFEHL" = musik-02 ]; then cvlc --random /home/user/mp3/Sicherung_USB
elif [ "$BEFEHL" = Musik_ausschalten ]; then killall vlc
fi
Allerdings bekomme ich hierbei eine Fehlermeldung:
./test.sh: Zeile 14: Syntaxfehler: Unerwartetes Dateiende.
Kann mir hier jemand einen Tipp geben, wo der Fehler liegen könnte?
Ich habe keine Idee mehr.
Danke schon mal.
Grüße vom it-frosch
Lösung:
Bei der einzeiligen Schreibweise müssen alle Teile des Befehls mit ; abgeschlossen werden
Also so:
if [ "$BEFEHL" = musik-01 ]; then if [[ -z "$a" ]]; then cvlc --random /home/user/mp3; else killall vlc && cvlc --random /home/user/mp3; fi
Dann funktioniert es auch mit if - then - else und der Abfrage.
Please also mark the comments that contributed to the solution of the article
Content-Key: 593157
Url: https://administrator.de/contentid/593157
Printed on: April 19, 2024 at 18:04 o'clock
6 Comments
Latest comment
Hallo,
Hier ein Link:
ss64.com/bash/if.html
In der einzeiligen Form muss vor fi genauso ein ; stehen wie vor then
Grüße
Klaus
Hier ein Link:
ss64.com/bash/if.html
In der einzeiligen Form muss vor fi genauso ein ; stehen wie vor then
Grüße
Klaus