Archives du blog

Shell : Avoir des options en plus des arguments

Rien d’innovant, mais une syntaxe comme celle là il faut l’avoir à portée de main 😉
Quelques contraintes que je ne retrouve pas dans d’autres langages : Les options doivent être passées avant les arguments.
ce bout de code permet d’analyser les options (ici -u qui attend un argument). Le reste des arguments ($1, $2,…) est à récupérer normalement, les options sont supprimées de la ligne d’appel après lecture (et donc ne décalent pas la numérotation des arguments).

#!/bin/ksh

uid=""
while getopts u: option
do
    case $option in
        u) uid="${OPTARG}" ;;
        🙂 echo "option -$OPTARG needs an argument" ;;
        [?]) echo "Usage incorrect : "
                echo "$0 [-u option] arg1 "
                exit 1
                ;;
    esac
done
shift $OPTIND-1

echo "uid : [$uid]"
echo "\$@ : $@"
echo "\$# : $#"

echo "\$1 : $1"

Sinon il y a la méthode complète : http://docstore.mik.ua/orelly/unix3/korn/appb_11.htm