ajout des fonctions seta(), _seta(), echo_seta()

This commit is contained in:
Jephté Clain 2017-03-02 02:37:47 +04:00
parent a43359c760
commit 528d5795ec
1 changed files with 31 additions and 1 deletions

View File

@ -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..@"