Hallo liebe Gemeinde,
ich wollte ein einfaches Shell-Skript für die komfortable Steuerung des Apache 2 und MySQL-Servers implementieren.
Mein Skript soll, abhängig davon, ob es mit oder ohne Parameter aufgerufen wurde, andere Aktionen ausführen, sodass ich es in eine große if-Bedingung gliedern möchte.
Dabei tut sich aber schon ein Problem auf: Wie kann ich zuverlässig herausfinden, ob das Skript mit oder ohne Parameter aufgerufen wurde?
Ich habe 2 Ideen, die jedoch beide nicht funktionieren:
Testen, ob die Variable $1 gleich "" ist:
1 2 3 4 5 6 7 8 9 | #!/bin/bash if [ $1 == "" ]; then echo "Ohne Parameter aufgerufen"; else echo "Mit Parameter aufgerufen"; fi exit 0; |
2. Testen, ob die Variable $1 nicht leer ist:
1 2 3 4 5 6 7 8 9 | #!/bin/bash if [ -n $1 ]; then echo "Mit Parameter aufgerufen"; else echo "Ohne Parameter aufgerufen"; fi exit 0; |
Bei der 1. Variante wird beim Aufruf mit Parameter der else-Block ausgeführt, was so sein sollte.
Beim Aufruf ohne Parameter kommt jedoch folgende Fehlermeldung;
./testskript.sh: Zeile 3: [: ==: Einstelliger (unärer) Operator erwartet.
Anschließend wird ebenfalls der else-Block ausgeführt.
Bei der 2. Variante wird in beiden Fällen der then-Block ausgeführt.
Wie kann ich die if-Abfrage nun so gestalten, dass sie zuverlässig herausfindet, ob das Skript mit oder ohne Parameter aufgerufen wurde?
Shell-Skripte sind für mich völliges Neuland, aber ich habe schon ein wenig Erfahrung mit PHP und C++.
Vielen Dank im Voraus,
bubi97