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"
 | |
| }
 |