diff --git a/lib/ulib/base b/lib/ulib/base index e54d183..852a692 100644 --- a/lib/ulib/base +++ b/lib/ulib/base @@ -107,18 +107,51 @@ 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 + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + eval "$__s_var=\"$(qval "$*")\"" +} +function _setv() { +# Comme la fonction setv() mais ne supporte que la syntaxe '_setv var cmd args...' local __s_var="$1"; shift eval "$__s_var=\"$(qval "$*")\"" } function setx() { -# initialiser la variable $1 avec le résultat de la commande '$2..@' +# initialiser la variable $1 avec le résultat de la commande "$2..@" +# note: en principe, la syntaxe est 'setx var cmd args...'. cependant, la +# syntaxe 'setx var=cmd args...' est supportée aussi local __s_var="$1"; shift - eval "$__s_var=\"\$(\"\$@\")\"" + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + eval "$__s_var="'"$("$@")"' +} +function _setx() { +# Comme la fonction setx() mais ne supporte que la syntaxe '_setx var cmd args...' + local __s_var="$1"; shift + eval "$__s_var="'"$("$@")"' } function seta() { -# initialiser le tableau $1 avec le résultat de la commande '$2..@', chaque +# initialiser le tableau $1 avec le résultat de la commande "$2..@", chaque # ligne du résultat étant un élément du tableau +# note: en principe, la syntaxe est 'seta var cmd args...'. cependant, la +# syntaxe 'seta var=cmd args...' est supportée aussi + local __s_array="$1"; shift + if [[ "$__s_var" == *=* ]]; then + set -- "${__s_var#*=}" "$@" + __s_var="${__s_var%%=*}" + fi + eval "$__s_array=($("$@" | qlines))" +} +function _seta() { +# Comme la fonction seta() mais ne supporte que la syntaxe '_seta var cmd args...' local __s_array="$1"; shift eval "$__s_array=($("$@" | qlines))" }