Met een klein beetje werk kun je je eigen shellscripts ook deze opties geven. Een groot voordeel is dat, in mijn ervaring, scripts op deze manier bruikbaarder worden: in plaats van dat je argumenten in een bepaalde volgorde mee moet geven, kun je dit laten afhandelen door het script zelf. Het scheelt in het maken van vervelende, of zelfs fatale fouten.

Met het getopt commando heb je dit snel geïmplementeerd:

TEMP=`getopt -o b:f:h --long foo:,bar:,help \

-n 'test-script' -- "[email protected]"`

Met dit commando wordt de invoer dat aan het commando meegegeven wordt aan getopt gevoerd, dat vervolgens gaat kijken welke opties geaccepteerd worden. In het bovenstaande zijn er zes optie: drie "korte" en drie "lange". De twee korte opties b en f kunnen gevolgd worden door een argument (dit wordt aangegeven door de : erachter), de twee lange opties foo en bar kunnen gevolgd worden door een = met daarachter een argument, zoals dit:

./test-script --foo=baz -b bat

De resultaten van getopt wordt in de variabele $TEMP geplaatst. Deze evalueer je, waarna je er met een simpel loopje doorheen kunt stappen:

eval set -- "$TEMP"

while true; do

case "$1" in

-f|--foo) address=$2; shift 2;;

-b|--bar) alias=$2; shift 2;;

-h|--help) echo "Usage --bar= --foo= ";

echo " bar: bar, not foo";

echo " foo: foo, not bar";

exit;;

--) shift ; break ;;

*) echo "Invalid arguments"; exit 1;;

esac

done

Bron: Techworld