Hallo,
Ich habe ein Problem mit folgendem Script
https://nopaste.linux-dev.org/?1172055
Das Script läuft bis Zeile 92 richtig durch.
VPNCONNECTED ist immer 0. Und das obwohl der VPN läuft. Auf der Kommandozeile kann ich den VPN ganz normal anpingen.
Jemand einen Rat?
Problem mit bash script
Re: Problem mit bash script
Diese Bedingung ist immer falsch, denn die Zeichenkette "VPNCONNECTED" ist nicht gleich der Zeichenkette "1". Du meinst entwederif [ VPNCONNECTED == 1 ];
Code: Alles auswählen
if [ $VPNCONNECTED = 1 ]
Code: Alles auswählen
if (( VPNCONNECTED == 1 ))
Code: Alles auswählen
xxx
if [ $? -eq 0 ]
Code: Alles auswählen
if xxx
-
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Re: Problem mit bash script
Ich kann mich meinem Vorposter nur anschließen. Zusätzlich fiel mir noch auf, dass alle ";" in deinem Shellscript keinem Zweck dienen, und an sich gelöscht werden können. Ebenso nutzt viele groß geschriebene Variablen, was dir Probleme bereiten kann, wenn unbeabsichtigt globale Umgebungsvariablen überschreibst. Daher immer aufpassen und Variablen idealerweise klein schreiben. Würde dir auch empfehlen, Variablenwerte (VAR="WERT") grundsätzlich in Doublequotes zu setzen, was die Sicherheit erhöht bezüglich beliebiger Inhalte. Denn für gewöhnlich ist es nicht wirklich erwünscht, dass eine Kommandozeile falsch interpretiert wird, wenn sich ggf. Werte und Parameter überschneiden. Dann würde das jeweilige Programm letztlich Fehler oder gar ernste Probleme produzieren. Zuzüglich kann es je nach Fall sinnvoll sein, auch ausgeschriebene Variablen ($VAR) der Sicherheit wegen in Doublequotes zu setzen, um den Inhalt einer Variable als Ganzes zu übergeben. Wenn man hier mehrere Werte oder Parameter übergeben will, dann wäre ein Array wieder besser.
Wie schon gesagt wurde ist das deutlich empfehlenswerter. Zum einen weil es deutlich Code einspart, und zum anderen können Exitcodes der jeweiligen Bedingungen direkt verarbeitet werden.
Code: Alles auswählen
if PROGRAMM PARAMETER