Bonjour,

Je viens demander quelques explications a propos du shift lie a getopts, car je souhaite parser mes options (facultative et une avec argument) et me decaller a chaque fois afin de pouvoir appeler mes fonctions sans galerer avec $1 $2 $3 etc ...

Voici ce que j'ai fait pour le moment

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
 
usage()
{
    echo "Usage : $0 [-k] [-f <db_file>] (put (<clef> | $<clef>) (<valeur> | $<clef>) |"
    echo "                                del (<clef> | $<clef>) [<valeur> | $<clef>] |"
    echo "                                select [<expr> | $<clef>])"
    exit 1
}
 
while getopts ":kf:" opt
do
    case "$opt" in
        k)
            IS_K_OPT=1;
            shift $(($OPTIND-1))
            ;;
        f)
            DBFILE=$OPTARG
            shift $(($OPTIND-1))
            ;;
	:)
            echo "Missing parameter for $OPTARG"
            exit 1
            ;;
        \?)
            usage
            exit 1
            ;;
    esac
done
 
case "$1" in
    put)
        put "$DBFILE" "$2" "$3"
        ;;
    del)
        del "$DBFILE" "$2" "$3"
        ;;
    select)
        selectt "$DBFILE" "$2"
        ;;
    *)
        usage
        ;;
esac
Il fonctionne lorsque je met que 1option, mais les 2 combine j'ai la fonction usage qui s'affiche ...

bref je suis un peu paume, il y a moyen de expliquer mon erreur ? merci