60 lines
1.9 KiB
Plaintext
60 lines
1.9 KiB
Plaintext
|
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||
|
## Fonctions dépréciées
|
||
|
##@cooked nocomments
|
||
|
uprovide base.deprecated
|
||
|
|
||
|
# base.array
|
||
|
|
||
|
function set_array_cmd() {
|
||
|
# Afficher la commande permettant d'initialiser le tableau $1 avec les valeurs:
|
||
|
# soit du tableau $2, soit de $3..$n si $2=="@"
|
||
|
# S'il n'y a que l'argument $1, alors afficher la commande permettant de
|
||
|
# recréer le tableau $1
|
||
|
if [ $# -eq 1 ]; then echo_seta "$1"
|
||
|
elif [ "$2" == @ ]; then echo_seta "$1" "${@:3}"
|
||
|
else eval "echo_seta \"\$1\" \"\${$2[@]}\""
|
||
|
fi
|
||
|
}
|
||
|
function set_array() {
|
||
|
# Soit $1 un tableau à créer. Si $2=="@", créer le tableau $1 avec les valeurs
|
||
|
# $3..$n. Sinon, créer le tableau $1 avec les valeurs du tableau $2.
|
||
|
# Cette fonction n'existe que comme un pendant de set_var(), mais le véritable
|
||
|
# intérêt est la fonction set_array_cmd(). cf array_copy() pour une version plus
|
||
|
# efficace de la copie de tableaux
|
||
|
eval "$(set_array_cmd "$@")"
|
||
|
}
|
||
|
|
||
|
# base.misc
|
||
|
|
||
|
function quote_in() {
|
||
|
# Comme quote_arg pour une chaine lue sur stdin
|
||
|
sed 's/\\/\\\\/g
|
||
|
s/"/\\"/g
|
||
|
s/\$/\\$/g
|
||
|
s/`/\\`/g'
|
||
|
}
|
||
|
function quote_sin() {
|
||
|
# Pour la chaine lue sur stdin, remplacer ' par '\''. Cela permet de protéger une
|
||
|
# chaine à mettre entre quotes
|
||
|
sed "s/'/'\\\\''/g"
|
||
|
}
|
||
|
function quote_sarg() {
|
||
|
# Dans la chaine $1, remplacer ' par '\''. Cette fonction utilise quote_sin,
|
||
|
# puisque le shell a des difficultés à faire le rechercher/remplacer approprié
|
||
|
quote_sin <<<"$1"
|
||
|
}
|
||
|
function quoted_sarg() {
|
||
|
# Dans la chaine $1, remplacer ' par '\'', et afficher la chaine entourée de
|
||
|
# quotes
|
||
|
echo "'$(quote_sarg "$1")'"
|
||
|
}
|
||
|
function quoted_sargs() {
|
||
|
# Comme quoted_sarg, mais tous les arguments sont quotés et affichés entourés de
|
||
|
# quotes, ce qui permet de construire des arguments d'une ligne de commande
|
||
|
local a s
|
||
|
for a in "$@"; do
|
||
|
s="${s:+$s }$(quoted_sarg "$a")"
|
||
|
done
|
||
|
recho "$s"
|
||
|
}
|