Denkfehler - Syntaxfehler in Shell Script
Hallo,
ich habe folgendes Script:
Nun bekomme ich folgenden Fehler:
Ich sehe hier nur keinen Syntaxfehler, sieht ihn jemand von euch?
Ich will hier nur ganz simpel prüfen, ob eine IP vom Tunnel da ist und falls nicht, den Tunnel neu starten.
Gruß
ich habe folgendes Script:
if ping -c1 10.0.4.1 ; then
#Allels ok
else
/etc/init.d/ipsec restart
fi
Nun bekomme ich folgenden Fehler:
./tunnel.sh: line 3: syntax error: unexpected "else"
Ich sehe hier nur keinen Syntaxfehler, sieht ihn jemand von euch?
Ich will hier nur ganz simpel prüfen, ob eine IP vom Tunnel da ist und falls nicht, den Tunnel neu starten.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 367884
Url: https://administrator.de/forum/denkfehler-syntaxfehler-in-shell-script-367884.html
Ausgedruckt am: 07.04.2025 um 19:04 Uhr
6 Kommentare
Neuester Kommentar
Servus @killtec ,
dein Problem ist das du keinen Befehl zwischen dem then und dem else hast
.
Negier den Ping einfach mit einem Ausrufezeichen und du brauchst keinen Else Zweig der hier ja offensichtlich nicht gebraucht wird.
Oder alternativ geht auch
Zweitens hast du keinen Shebang angegeben, das ist schlechter Stil denn dann könnte dein Skript einen anderen Interpreter nehmen als den den du eigentlich willst.
Siehe auch
https://unix.stackexchange.com/questions/133972/bash-syntax-error-when-e ...
Grüße Uwe
dein Problem ist das du keinen Befehl zwischen dem then und dem else hast
Negier den Ping einfach mit einem Ausrufezeichen und du brauchst keinen Else Zweig der hier ja offensichtlich nicht gebraucht wird.
#!/bin/sh
if ! ping -c1 10.0.4.1 >/dev/null ;then
/etc/init.d/ipsec restart
fi
#!/bin/sh
! ping -c1 10.0.4.1 >/dev/null && /etc/init.d/ipsec restart
Siehe auch
https://unix.stackexchange.com/questions/133972/bash-syntax-error-when-e ...
Grüße Uwe
Dann lass sie dir mit
How to determine the current shell I'm working on?
Nötig ist die Shebang nicht zwingend, es wird dann die Default Shell genommen, aber es gibt gute Gründe sie immer mit rein zu nehmen, gerade aus solchen Gründen wie du sie gerade erfährst, wenn sich plötzlich die Default Shell ändert etc..
echo $0
anzeigen.How to determine the current shell I'm working on?
Nötig ist die Shebang nicht zwingend, es wird dann die Default Shell genommen, aber es gibt gute Gründe sie immer mit rein zu nehmen, gerade aus solchen Gründen wie du sie gerade erfährst, wenn sich plötzlich die Default Shell ändert etc..
Solltest unter /bin (oder /usr/bin) trotzdem mal schauen, welche shells da sind, bzw. welche shell bei dem betreffenden User voreingestellt ist. Diese shell dann am besten im shebang eintragen. Das verhindert nämlich, das Dein skript irgendwann von heut auf morgen "spinnt", weil jemand die default shell geändert hat.
lks