ajout des noms de variables automatique
la variable de tableau n'est pas supprimée
This commit is contained in:
parent
ed23ad179a
commit
ecccb58e15
|
@ -1 +1 @@
|
|||
006000000
|
||||
007000000
|
||||
|
|
|
@ -2322,6 +2322,9 @@ function parse_opts() {
|
|||
# mentionnée ('' pour aucune mention, '1' pour une seule mention, etc.), sauf si
|
||||
# on utilise la forme var=value, auquel cas la variable obtient la valeur value,
|
||||
# et le nombre d'occurences de l'option n'est pas compté.
|
||||
# Pour faciliter la lecture:
|
||||
# '--opt .' est équivalent à '--opt opt'
|
||||
# '--opt: .' est équivalent à '--opt: opt='
|
||||
# Avec la forme '-o:' ou '--longopt:', l'option prend un argument obligatoire.
|
||||
# Avec la forme '-o::' ou '--longopt::', l'option prend un argument facultatif
|
||||
# (dans ce cas, la valeur de l'option sur la ligne de commande doit
|
||||
|
@ -2330,12 +2333,10 @@ function parse_opts() {
|
|||
# la variable de destination est un tableau qui contient toutes les valeurs.
|
||||
# Le traitement de la valeur d'une variable dépend de la forme utilisée.
|
||||
# - Avec une option sans argument, le comportement est celui décrit ci-dessus.
|
||||
# - Avec une option qui prend des arguments, la forme '-o: var' provoque
|
||||
# l'effacement de la variable de destination, puisqu'elle doit devenir un
|
||||
# tableau qui contiendra toutes les valeurs mentionnées dans les options. La
|
||||
# forme '-o: var=' empêche l'effacement de la variable de destination, qui garde
|
||||
# sa valeur par défaut. De plus, elle ne sera pas un tableau, et l'on ne
|
||||
# supporte pas les valeurs multiples.
|
||||
# - Avec une option qui prend des arguments, la forme '-o: var' considère que
|
||||
# var est un tableau qui contiendra toutes les valeurs mentionnées dans les
|
||||
# options. Avec la forme '-o: var=', la variable n'est pas un tableau et
|
||||
# contient toujours la dernière valeur spécifiée.
|
||||
# - Dans la forme 'opt $cmd', la commande cmd est executée avec eval *dès* que
|
||||
# l'option est rencontrée. La variable option_ contient l'option, e.g. '-o' ou
|
||||
# '--longopt'. Le cas échéant, la variable value_ contient la valeur de
|
||||
|
@ -2425,6 +2426,19 @@ function __po_parse_optdescs() {
|
|||
let shift_=$shift_+2
|
||||
elif [[ "$1" == --* ]] || [[ "$1" == -* ]]; then
|
||||
array_split optdescs_ "$1" ","
|
||||
if [ "$2" == . ]; then
|
||||
local autoname_
|
||||
for optdesc_ in "${optdescs_[@]}"; do
|
||||
if [ ${#optdesc_} -gt ${#autoname_} ]; then
|
||||
autoname_="$optdesc_"
|
||||
fi
|
||||
done
|
||||
while [ -n "$autoname_" -a "${autoname_#-}" != "$autoname_" ]; do autoname_="${autoname_#-}"; done
|
||||
while [ -n "$autoname_" -a "${autoname_%:}" != "$autoname_" ]; do autoname_="${autoname_%:}"; done
|
||||
autoname_="${autoname_//-/_}"
|
||||
shift; shift
|
||||
set -- dummy "$autoname_" "$@"
|
||||
fi
|
||||
for optdesc_ in "${optdescs_[@]}"; do
|
||||
if [[ "$2" == \$* ]]; then
|
||||
name_="$2"
|
||||
|
@ -2441,23 +2455,19 @@ function __po_parse_optdescs() {
|
|||
elif [[ "$optdesc_" == *:: ]]; then
|
||||
option_="${optdesc_%::}"
|
||||
if [[ "$2" == *=* ]]; then
|
||||
# la valeur mentionnée est toujours ignorée, mais la
|
||||
# valeur de la variable n'est pas écrasée
|
||||
# la valeur mentionnée est toujours ignorée
|
||||
name_="${2%%=*}="
|
||||
else
|
||||
name_="$2"
|
||||
array_new "$name_"
|
||||
fi
|
||||
flag_=::
|
||||
elif [[ "$optdesc_" == *: ]]; then
|
||||
option_="${optdesc_%:}"
|
||||
if [[ "$2" == *=* ]]; then
|
||||
# la valeur mentionnée est toujours ignorée, mais la
|
||||
# valeur de la variable n'est pas écrasée
|
||||
# la valeur mentionnée est toujours ignorée
|
||||
name_="${2%%=*}="
|
||||
else
|
||||
name_="$2"
|
||||
array_new "$name_"
|
||||
fi
|
||||
flag_=:
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue