Bash/Scripting/Parse Args
Aus SchnallIchNet
Inhaltsverzeichnis
Parse with getopts (bash-builtin)
while getopts "fhm" OPTION; do case $OPTION in f) FORCE=1 ;; h) print_help; exit ;; m) BASE="MM" ;; *) echo "Unknown Argument $OPTION given"; exit 1;; esac done
Parse in 'while'-loop
#!/bin/sh while [ "$1" ]; do optarg="" opt="" case "$1" in -*=*) opt=`echo "$1" | sed 's/=.*//'` optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) opt=$1 ;; esac case $opt in -u) shift; # shift the '-u' MYUSER=$1 shift; # shift the val ;; --user) MYUSER=$optarg; shift; # shift the '--user=val' ;; -h|*) echo "my help text " exit 1 ;; esac done echo "\$MYUSER = $MYUSER" echo "\$Q = $Q" exit 0
Parse in 'select'-loop
select opt in $@; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done
If you run this script you'll see that it is a programmer's dream for text based menus. You'll probably notice that it's very similar to the 'for' construction, only rather than looping for each 'word' in $OPTIONS, it prompts the user. but use case construct in the select-loop instead...