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/contentid/920343936

Printed on: August 31, 2024 at 22:08 o'clock

godlie
Solution godlie Jul 06, 2021 updated at 08:37:27 (UTC)
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 Jul 06, 2021 at 08:49:33 (UTC)
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 Jul 06, 2021 at 16:03:06 (UTC)
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