Bonjour,
J'essaye d'utiliser getopts avec des options longue pour avoir la possibilité de mettre des espaces dans mes paramètres.
Si j'utilise mon code ci dessous comme ceci : ./test.sh --process "test" -H 1.2.3.4, ca fonctionne bien, mais si je met ./test.sh --process "test1 test2" -H 1.2.3.4, j'ai bien "test1 test2" dans $o_process mais l'option -H n'est jamais lu.
Je ne vois pas pourquoi getopts ne continue pas la lecture des arguments dans ce cas là.
Merci de votre aide.
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 #!/bin/bash while getopts "H:P:-:" opt $@; do case $opt in H) o_hostname=$OPTARG ;; P) o_process=$OPTARG ;; c) o_count=$OPTARG ;; -) case $OPTARG in hostname) o_hostname="${!OPTIND}"; let "OPTIND += 1" ;; process) o_process="${!OPTIND}"; let "OPTIND += 1" ;; *) echo "Option inconue, $opt, $OPTARG" exit $STATE_UNKNOWN ;; esac ;; *) echo "Option inconue, $opt, $OPTARG" exit $STATE_UNKNOWN ;; esac done echo hostname=$o_hostname echo process=$o_process
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 # ./test.sh --process test1 -H 1.2.3.4 hostname=1.2.3.4 process=test1 # ./test.sh --process "test1 test2" -H 1.2.3.4 hostname= process=test1 test2
Partager