| BASH och parametrar | E-post |
|
Anta att man i ett BASH-script vill ta emot parametrar som ska ange hur scriptet ska bete sig. Man kanske vill att scriptet ska visa utdata i en browser om man anger --browser firefox och skicka det till en fil om man anger -o filnamn.txt. I det här exemplet antas att man kan ange tre parametrar - alla valfria. -sv volume -v verbose -u user Scriptet kan alltså anropas på en mängd olika sätt : parameter.sh "hejsan" -sv 34 parameter.sh -u marwal -v yes Sagogryn Mannagryn parameter.sh -sv true -v false -u root Hej Baberiba Men hur ska skriptet kunna avgöra vad som är styrparametrar och vad som inte är det? #!/bin/bash SV=0 V=0 U=0 OUT="" until [ -z "$1" ] do if [ $SV == 1 ]; then SV=$1 elif [ $V == 1 ]; then V=$1 elif [ $U == 1 ]; then U=$1 else case "$1" in "-sv") SV=1;; "-v") V=1;; "-u") U=1;; *) OUT="$OUT $1";; esac fi shift done echo "Utdata: $OUT" if [ $SV != 0 ]; then echo "Volym: $SV"; fi if [ $V != 0 ]; then echo "Verbose: $V"; fi if [ $U != 0 ]; then echo "User: $U"; fi" Om ovanstående kod anropas med : parameter.sh -sv 47 Arne -u Sprängd Anka -v true, ges utdata : Utdata: Arne Anka Volym: 47 Verbose: true User: Sprängd Läs mer om BASH och parametrar
Edit: 2007-04-17 #!/bin/bash while getopts "abhv:" options; do case $options in a ) echo -n "A=$OPTARG, " ;; b ) echo -n "B=$OPTARG, " ;; h ) echo -n "H=$OPTARG, " ;; v ) echo -n "V=$OPTARG, " ;; esac done echo Anropas scriptet såhär : scriptet -v 10 -ah
...ges utdata : V=10, A=, H=
Så, jag har lärt mig något nytt och du kan glömma allt jag svamlade om ovan. Kommentarer (0)
![]() Skriv kommentar
|
|||
| < Föregående |
|---|





