potshock
Goto Top

Linux Bash Parameter

Hallo Linux User,

ich baue gerade ein kl. Script, welches via case auf verschiedene Parameter reagieren soll.

Jetzt möchte ich, daß wenn ein nicht definierter Parameter eingeben wird, das Script genau so reagiert als hätte ich keinen Parameter oder -h / -H gesetzt.
Die einzige Lösung die mir einfällt, ist beim Start des Scripts via if abzufragen, ob einer der definierten Parameter gesetzt ist und wenn dies nicht der Fall ist, diesen auf -h zu setzen.

Aber gibt es da nicht eine elegantere Lösung direkt via case Anweisung?


case "$1" in  
   # Parameter $1 ist leer, -h oder -H
   ""|-h|-H)  
	echo "#M: Dies ist die Hilfe zu $0."  
        .......
	exit
	;;

   # Parameter $1 ist -t oder -T
   -t|-T)  
	echo "#M: Dies ist der Testlauf von $0."  
         ....
	;;


   # Parameter $1 ist -f oder -F
   -f|-F)  
	echo "#M: $0 wird ausgefuehrt!."  
        ..........
        ;;	

esac

Viele Grüße
Poshock

Content-ID: 920343936

Url: https://administrator.de/forum/linux-bash-parameter-920343936.html

Ausgedruckt am: 22.12.2024 um 11:12 Uhr

godlie
Lösung godlie 06.07.2021 aktualisiert um 10:37:27 Uhr
Goto Top
Hallo,

das geht recht einfach, du suchst das *) face-smile, weiters solltest du deine Sachen alle in Funktionen packen, dann kannst du sie einfach aufrufen.

# Demonstriert die case-Anweisung zum Auswerten von Optionen
# acase7
# Als erstes Argument angeben
case "$1" in  
   -[tT]|-test)        echo "Option \"test\" aufgerufen"  ;;  
   -[hH]|-help|-hilfe) echo "Option \"hilfe\" aufgerufen" ;;  
   *)                  echo "($1) Unbekannte Option aufgerufen!"  
esac

https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_007. ...
potshock
potshock 06.07.2021 um 10:49:33 Uhr
Goto Top
Hi godlie,

ich hatte auch schon mit dem * rum experimentiert.
Jetzt klappt es auch bei mir.

Danke Dir und noch einen schönen Tag
Potshock
bloodstix
bloodstix 06.07.2021 um 18:03:06 Uhr
Goto Top
Hi,

schau dir mal dazu noch das hier https://www.baeldung.com/linux/use-command-line-arguments-in-bash-script bzw. die getopts Funktion an. Damit ist es dann auch egal, in welcher Reihenfolge die Parameter ans Skript übergeben werden bzw brauchst nicht endlos $1 $2 $3 usw prüfen.

Grüße
bloody