next up previous contents Next: Les arguments en ligne Up: Les scripts du shell. Previous: Usage des fonctions: le   Table des matières  

8.8 Utiliser proprement les arguments de la ligne de commandes: le mot-clé shift.

La plupart des programmes que nous avons vus peuvent prendre de nombreux arguments en ligne de commandes, parfois sans que l'ordre n'ait d'importance. Nous allons voir comment nos propres scripts peuvent utiliser cette fonctionnalité. Les arguments en ligne de commandes sont accessibles via $1, $2, etc. Le script:

#!/bin/bash 

echo "The first argument is: $1, second argument is: $2, third argument is: $3" 



peut être exécuté avec:

myfile.sh chien chat hibou 


et il affiche:

The first argument is: chien, second argument is: chat, third argument is: hibou 


Nous aurions bien besoin d'une boucle sur chaque argument. Un script comme:

for i in $1 $2 $3 $4; do

      <instructions>

done 



n'apporte pas beaucoup de souplesse. Le mot-clé shift est destiné à faciliter les choses. Il modifie la position des arguments en déplaçant $1 à la valeur de $2, tandis que $2 prend la valeur de $3 et ainsi de suite (!= teste que "$1" n'est pas égal à "", c'est-à-dire que $1 n'est pas vide). Essayez:

while test "$1" != ""; do

      echo $1

      shift

done 



et exécutez le programme avec de nombreux arguments.

A présent, vous pouvez introduire toute sorte de conditions entre do et done pour traiter les arguments tour-à-tour:

#!/bin/sh 

function usage ()

{

        echo "Usage:" 
        echo "      myprog.sh [--test|--help|--version] [--echo <text>]" } 
 

while test "$1" != ""; do

        case $1 in

                --echo|-e)

                        echo "$2"

                        shift

                ;;

                --test|-t)

                        echo "you used the --test option"

                ;;

                --help|-h)

                        usage

                        exit 0

                ;;

                --version|-v)

                        echo "myprog.sh version 0.0.3"

                        exit 0

                ;;

                -*)

                        echo "Error: no such option $1"

                        usage

                        exit 1

                ;;

        esac

        shift

done 



myprog.sh peut, dès lors, être utilisé avec de multiples arguments.


next up previous contents Next: Les arguments en ligne Up: Les scripts du shell. Previous: Usage des fonctions: le   Table des matières  
1-01-2006