60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
##@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_seta2 "$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"
 | 
						|
}
 |