nutools/lib/ulib/base.quote

73 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 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//\//\\/}"
s="${s//
/\\n}"
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
}
function _qsql() {
# Dans la chaine $*, remplacer ' par ''. Ceci est utile pour quoter une valeur à
# insérer dans une chaine d'une requête SQL.
local q="'" qq="''"
echo "${*//$q/$qq}"
}
function qsql() {
# Dans la chaine $*, remplacer ' par '' et afficher la chaine entourée de
# quotes. Ceci est utile pour quoter des valeurs à insérer dans une requête SQL.
local q="'" qq="''"
echo "'${*//$q/$qq}'"
}