Merge branch 'master' of vcs.univ.run:modules/nutools

This commit is contained in:
Jephté Clain 2014-09-05 13:43:33 +04:00
commit bc1dd7174e
1 changed files with 78 additions and 4 deletions

View File

@ -107,21 +107,95 @@ 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_array" == *=* ]]; then
set -- "${__s_array#*=}" "$@"
__s_array="${__s_array%%=*}"
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))"
}
function evalx() {
# évaluer ...
local val arg r=0
local -a cmd
local first=1
while [ $# -gt 0 ]; do
cmd=()
while [ $# -gt 0 ]; do
arg="$1"; shift
[ "$arg" == // ] && break
if [ "${arg%//}" != "$arg" ]; then
local tmp="${arg%//}"
if [ -z "${tmp//\\/}" ]; then
arg="${arg#\\}"
cmd=("${cmd[@]}" "$arg")
continue
fi
fi
cmd=("${cmd[@]}" "$arg")
done
if [ -n "$first" ]; then
val="$("${cmd[@]}")" || r=$?
else
val="$("${cmd[@]}" "$val")" || r=$?
fi
first=
done
[ -n "$val" ] && echo "$val"
return $r
}
function evalp() {
# évaluer ...
:
}
function testx() {
# tester ...
:
}
function e2of() {
# lancer la commande $@ en redirigeant la sortie d'erreur sur la sortie standard
"$@" 2>&1