fusionner seta() et setx()
This commit is contained in:
parent
cd6b0e062a
commit
220016a1e9
@ -139,37 +139,43 @@ function _setv() {
|
|||||||
eval "$__s_var=\"$(_qval "$*")\""
|
eval "$__s_var=\"$(_qval "$*")\""
|
||||||
}
|
}
|
||||||
function setx() {
|
function setx() {
|
||||||
|
# syntaxe 1: setx var cmd
|
||||||
# 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
|
# note: en principe, la syntaxe est 'setx var cmd args...'. cependant, la
|
||||||
# syntaxe 'setx var=cmd args...' est supportée aussi
|
# syntaxe 'setx var=cmd args...' est supportée aussi
|
||||||
local __s_var="$1"; shift
|
# syntaxe 2: setx -a array cmd
|
||||||
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...'
|
|
||||||
# Cette fonction est légèrement plus rapide que setx()
|
|
||||||
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
|
# ligne du résultat étant un élément du tableau
|
||||||
# note: en principe, la syntaxe est 'seta var cmd args...'. cependant, la
|
# note: en principe, la syntaxe est 'setx -a array cmd args...'. cependant, la
|
||||||
# syntaxe 'seta var=cmd args...' est supportée aussi
|
# syntaxe 'setx -a array=cmd args...' est supportée aussi
|
||||||
|
if [ "$1" == -a ]; then
|
||||||
|
shift
|
||||||
local __s_array="$1"; shift
|
local __s_array="$1"; shift
|
||||||
if [[ "$__s_array" == *=* ]]; then
|
if [[ "$__s_array" == *=* ]]; then
|
||||||
set -- "${__s_array#*=}" "$@"
|
set -- "${__s_array#*=}" "$@"
|
||||||
__s_array="${__s_array%%=*}"
|
__s_array="${__s_array%%=*}"
|
||||||
fi
|
fi
|
||||||
eval "$__s_array=($("$@" | qlines))"
|
eval "$__s_array=($("$@" | qlines))"
|
||||||
|
else
|
||||||
|
local __s_var="$1"; shift
|
||||||
|
if [[ "$__s_var" == *=* ]]; then
|
||||||
|
set -- "${__s_var#*=}" "$@"
|
||||||
|
__s_var="${__s_var%%=*}"
|
||||||
|
fi
|
||||||
|
eval "$__s_var="'"$("$@")"'
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
function _seta() {
|
function _setvx() {
|
||||||
# Comme la fonction seta() mais ne supporte que la syntaxe '_seta var cmd args...'
|
# Comme la fonction setx() mais ne supporte que l'initialisation d'une variable
|
||||||
# Cette fonction est légèrement plus rapide que seta()
|
# scalaire avec la syntaxe '_setvx var cmd args...' pour gagner (un peu) en
|
||||||
|
# rapidité d'exécution.
|
||||||
|
local __s_var="$1"; shift
|
||||||
|
eval "$__s_var="'"$("$@")"'
|
||||||
|
}
|
||||||
|
function _setax() {
|
||||||
|
# Comme la fonction setx() mais ne supporte que l'initialisation d'un tableau
|
||||||
|
# avec la syntaxe '_setax array cmd args...' pour gagner (un peu) en rapidité
|
||||||
|
# d'exécution.
|
||||||
local __s_array="$1"; shift
|
local __s_array="$1"; shift
|
||||||
eval "$__s_array=($("$@" | qlines))"
|
eval "$__s_array=($("$@" | qlines))"
|
||||||
}
|
}
|
||||||
@ -212,12 +218,15 @@ function evalx() {
|
|||||||
}
|
}
|
||||||
function setx2() {
|
function setx2() {
|
||||||
# équivalent à setx $1 evalx $2..@
|
# équivalent à setx $1 evalx $2..@
|
||||||
|
local -a __s_args
|
||||||
|
if [ "$1" == -a ]; then __s_args=(-a); shift; fi
|
||||||
local __s_var="$1"; shift
|
local __s_var="$1"; shift
|
||||||
if [[ "$__s_var" == *=* ]]; then
|
if [[ "$__s_var" == *=* ]]; then
|
||||||
set -- "${__s_var#*=}" "$@"
|
set -- "${__s_var#*=}" "$@"
|
||||||
__s_var="${__s_var%%=*}"
|
__s_var="${__s_var%%=*}"
|
||||||
fi
|
fi
|
||||||
setx "$__s_var" evalx "$@"
|
__s_args=("${__s_args[@]}" "$__s_var")
|
||||||
|
setx "${__s_args[@]}" evalx "$@"
|
||||||
}
|
}
|
||||||
function evalp() {
|
function evalp() {
|
||||||
# Implémenter une syntaxe alternative permettant d'enchainer des traitements sur
|
# Implémenter une syntaxe alternative permettant d'enchainer des traitements sur
|
||||||
|
Loading…
Reference in New Issue
Block a user