SH/BASH Petite question avec des -param

SH/BASH Petite question avec des -param - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-01-2007 à 22:16:58    

Bonjour/bonsoir à tous.
 
J'ai une petite question par rapport a une technique de programmation:
Comment dans un programme sh, récuperer la valeur d'un paramètre nommé ?
Exemple: ./programme.sh -param1 valeur1 -param2 valeur2
Et récupérer la valeurX d'un -paramX même si ils sont inversés ou inexistants.
 
Parce que si je peut récupérer $1 $2 $3... je ne pourais pas savoir si il a des inversions ou des innexistants.
 
Je ne pense pas que ça doit être dur, mais j'ai pas envie de réinventer la lune pour un truc aussi classique !  :sol:  
 
HDSDI
 
Si je suis pas assez clair, dites le moi !

Reply

Marsh Posté le 12-01-2007 à 22:16:58   

Reply

Marsh Posté le 13-01-2007 à 01:20:01    

Utiliser "getopts"
 
Exemple:
 

# affiche l'aide
function print_usage
{
    echo "$1 [-l NIVEAU] [-d DOSSIER] [-u UNITE] [-s TAILLE_MINIMALE]"
}
 
# options
while getopts "hl:d:u:s:" opt ; do
    case $opt in
        u ) SIZEU=$OPTARG ;;
        l ) LEVEL=$OPTARG ;;
        s ) MIN_SIZE=$OPTARG;;
        d ) DIR=$OPTARG;;
        h ) print_usage $0
            exit 0 ;;
        * ) echo "Mauvais paramètre $opt"
            print_usage "$0"
            exit 1 ;;
    esac
done


Message édité par ph75 le 13-01-2007 à 01:20:36
Reply

Marsh Posté le 13-01-2007 à 12:51:35    

Merci !
 
Dans les parametre du while tu a un h1, puis en dessous tu recupere le h, pourquoi faire ?

Reply

Marsh Posté le 13-01-2007 à 12:54:56    

Ce n'est pas h1: mais hl:, la lettre "l".
Et ca se lit plutôt:    h  ,   l:  ,  d:  ,  u: ,  s:
-> les ":" indiquent qu'une valeur est attendue.
Donc dans l'exemple le "h" est l'afichage de l'aide, etr pas besoin de valeur évidemment.


Message édité par ph75 le 13-01-2007 à 12:56:02
Reply

Marsh Posté le 13-01-2007 à 13:04:46    

man getopts ?

Reply

Marsh Posté le 13-01-2007 à 13:24:26    

C'est une commande "builtin" du shell, donc man du shell.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed