59 lines
1.5 KiB
Bash
59 lines
1.5 KiB
Bash
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
## Fonctions de base: protection de valeurs chaine
|
|
##@cooked nocomments
|
|
uprovide base.quote
|
|
urequire base.core
|
|
|
|
function _qawk() {
|
|
# Dans la chaine $*, remplacer \ par \\ et " par \". Ceci est utile pour quoter
|
|
# des valeur à insérer dans un script awk
|
|
local s="$*"
|
|
s="${s//\\/\\\\}"
|
|
s="${s//\"/\\\"}"
|
|
s="${s//
|
|
/\\n}"
|
|
recho_ "$s"
|
|
}
|
|
function qawk() {
|
|
# Dans la chaine $*, remplacer \ par \\ et " par \" et afficher la chaine
|
|
# entourée de guillemets. Ceci est utile pour quoter des valeur à insérer dans
|
|
# un script awk
|
|
echo -n \"
|
|
_qawk "$@"
|
|
echo \"
|
|
}
|
|
function qseds() {
|
|
# Quoter la chaine $*, qui doit être utilisée comme chaine de recherche ou de
|
|
# remplacement de grep, sed ou awk
|
|
local s="$*"
|
|
s="${s//\\/\\\\}"
|
|
s="${s//\//\\/}"
|
|
recho "$s"
|
|
}
|
|
function _qform() {
|
|
# Dans la chaine $*, remplacer '%' par '%25', '+' par '%2B', '&' par '%26', '='
|
|
# par '%3D', ' ' par '+'
|
|
local s="$*"
|
|
s="${s//\%/%25}"
|
|
s="${s//+/%2B}"
|
|
s="${s//&/%26}"
|
|
s="${s//=/%3D}"
|
|
s="${s// /+}"
|
|
recho_ "$s"
|
|
}
|
|
function qform() {
|
|
# Dans la chaine $* qui est de la forme "name=value", remplacer dans name et
|
|
# dans value '%' par '%25', '+' par '%2B', '&' par '%26', '=' par '%3D', ' ' par
|
|
# '+'
|
|
local s="$*"
|
|
if [[ "$s" == *=* ]]; then
|
|
_qform "${s%%=*}"
|
|
echo -n =
|
|
_qform "${s#*=}"
|
|
echo
|
|
else
|
|
_qform "$s"
|
|
echo
|
|
fi
|
|
}
|