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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 593157
Url: https://administrator.de/forum/finde-den-fehler-im-bash-skript-nicht-593157.html
Ausgedruckt am: 22.12.2024 um 01:12 Uhr
6 Kommentare
Neuester Kommentar
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