Salut à tous,
je souhaite utiliser la fonction getopts pour parser les options.
J'ai dans mon script, une fonction et un programme principal, le programme principal utilise getopts pour effectuer le bon appel fonction (je suis dans un cas ou une option est utilisée à la fois).
Le problème semble se situer au niveau de la fonction avec getopts puisque aucune des options que j passe ne rentre dans le case et la commande que je construis est vide ...
le code :
résultat d'exécution :
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 #!/bin/bash -x #make a pseudo top on pbs jobs. top_pbs() { optstring=u:i: while getopts $optstring opt do echo "!!! $opt !!!" case $opt in u) echo 'uuu'; cmd="qstat -u $OPTARG" ;; i) cmd="qstat $OPTARG" ;; *) cmd="qstat -a" ;; esac done while (true) do echo cmd : $cmd echo "---" eval "$cmd" sleep 2 echo "***" clear done } #main optstring=mu:i: while getopts $optstring opt do echo "process options" case $opt in u) echo "uuser" ; top_pbs -u $OPTARG ;; ## $OPTARG contains the argument to the option m) top_pbs -u $(whoami) ;; i) top_pbs -i $OPTARG ;; *) exit 1 ;; esac done
merci d'avance,
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 ./script.sh -u benoit+ optstring=mu:i: + getopts mu:i: opt + echo 'process options' process options + case $opt in + echo uuser uuser + top_pbs -u benoit+ optstring=u:i: + getopts u:i: opt + true + echo cmd : cmd : + echo --- --- + eval '' + sleep 2 + echo '***' *** + clear + true + echo cmd : cmd : + echo --- --- + eval '' + sleep 2
ben![]()
Partager