Shell scripting med parameters
2009
Aha jeg fandt for nyligt ud af hvordan man får et shell script til at tage imod argumenter lige som almindelige programmer gør det.
Normalt ser mine shell scripts ud lige som denne
./shellscript.sh username password host
ovenstående script ville fylde variablerne $1 med “username” $2 med “password” og $3 med “host”
problemet er bare at for at kunne bruge disse variabler i scriptet skal man sørge for at de altid bliver skrevet i samme rækkefølge således at “password” eller “host” ikke lige pludselig står i $1 variablen
Men Hvis jeg nu gerne vil have den til at fungere ligesom som mysql f.eks. gør det.
mysql -u "user" -p "password" -h "host"
her er det nemlig ligegyldigt i hvilken rækkefølge parameterne kommer.
det samme kan man alså opnå i shell scripts ved at bruge “getopts”
her er et eksempel:
#!/bin/sh
while getopts 'ab:' OPTION do
case $OPTION in
a) aflag=1
;;
b) bflag=1
bval="$OPTARG"
;;
?) printf "Usage: %s: [-a] [-b value] args\n" $(basename $0)>&2
exit 2
;;
esac
done
Her fortæller jeg at scriptet kan forvente parameterne -a og -b samt at -b kommer med en værdi.
dette gør at jeg kan køre scriptet som jeg vil uden at det går i stykker.
./test.sh -a -b blabla
./test.sh -b blabla -a
Kilde: http://www.linux.com/archive/feature/118031
