diff --git a/lib/ulib/base.core b/lib/ulib/base.core index 7493921..a992e8e 100644 --- a/lib/ulib/base.core +++ b/lib/ulib/base.core @@ -166,7 +166,7 @@ function qlines() { sed "s/'/'\\\\''/g; s/.*/'&'/g" } function setv() { -# initialiser la variable $1 avec la valeur $2* +# initialiser la variable $1 avec la valeur $2..* # note: en principe, la syntaxe est 'setv var values...'. cependant, la # syntaxe 'setv var=values...' est supportée aussi local __s_var="$1"; shift @@ -191,6 +191,36 @@ function echo_setv() { fi echo "$__s_var=$(qvalr "$*")" } +function seta() { +# initialiser le tableau $1 avec les valeurs $2..@ +# note: en principe, la syntaxe est 'seta array values...'. cependant, la +# syntaxe 'seta array=values...' est supportée aussi + local __s_array="$1"; shift + if [[ "$__s_array" == *=* ]]; then + set -- "${__s_array#*=}" "$@" + __s_array="${__s_array%%=*}" + fi + eval "$__s_array=(\"\$@\")" +} +function _seta() { +# Comme la fonction seta() mais ne supporte que la syntaxe '_seta array values...' +# Cette fonction est légèrement plus rapide que seta() + local __s_array="$1"; shift + eval "$__s_array=(\"\$@\")" +} +function echo_seta() { +# Afficher la commande qui serait lancée par seta "$@" +# Le cas particulier 'seta array' affiche la commande pour recréer le +# tableau array + local __s_var="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + elif [ $# -eq 0 ]; then + eval "set -- \"\${$__s_var[@]}\"" + fi + echo "$__s_var=($(qvals "$@"))" +} function setx() { # syntaxe 1: setx var cmd # initialiser la variable $1 avec le résultat de la commande "$2..@"