supprimer _rval(), remplacer par qwc()
This commit is contained in:
parent
a3e647ee6a
commit
3ff7f78d0b
|
@ -1 +1 @@
|
||||||
007013002
|
007014000
|
||||||
|
|
|
@ -1304,7 +1304,7 @@ function __la_cmd() {
|
||||||
local arg
|
local arg
|
||||||
local cmd="/bin/ls -1d"
|
local cmd="/bin/ls -1d"
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
arg="$(_rval "$arg")"
|
arg="$(qwc "$arg")"
|
||||||
cmd="$cmd $arg"
|
cmd="$cmd $arg"
|
||||||
done
|
done
|
||||||
cmd="$cmd 2>/dev/null"
|
cmd="$cmd 2>/dev/null"
|
||||||
|
|
|
@ -29,31 +29,6 @@ function recho_() {
|
||||||
echo -n "$@"
|
echo -n "$@"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
function _rval() {
|
|
||||||
# Dans la chaine $*, remplacer \ par \\, " par \", ' par \', ( par \(, ) par \),
|
|
||||||
# { par \{, } par \}, [ par \[, ] par \], $ par \$, ` par \`, SPACE par \SPACE
|
|
||||||
|
|
||||||
# Cela permet de quoter une chaine à afficher telle quelle, sans guillemets, e.g
|
|
||||||
# eval "echo $(_rval "$value")"
|
|
||||||
# Note: la protection de ! n'est pas effectuée, parce que le comportement du
|
|
||||||
# shell est incohérent entre le shell interactif et les scripts. Pour une
|
|
||||||
# version plus robuste, il est nécessaire d'utiliser un programme externe tel
|
|
||||||
# que sed ou awk
|
|
||||||
local s="$*"
|
|
||||||
s="${s//\\/\\\\}"
|
|
||||||
s="${s//\"/\\\"}"
|
|
||||||
s="${s//\'/\'}"
|
|
||||||
s="${s//\(/\(}"
|
|
||||||
s="${s//\)/\)}"
|
|
||||||
s="${s//\{/\{}"
|
|
||||||
s="${s//\}/\}}"
|
|
||||||
s="${s//\[/\[}"
|
|
||||||
s="${s//\]/\]}"
|
|
||||||
s="${s//\$/\\\$}"
|
|
||||||
s="${s//\`/\\\`}"
|
|
||||||
s="${s// /\\ }"
|
|
||||||
recho_ "$s"
|
|
||||||
}
|
|
||||||
function _qval() {
|
function _qval() {
|
||||||
# Dans la chaine $*, remplacer \ par \\, " par \", $ par \$, ` par \`
|
# Dans la chaine $*, remplacer \ par \\, " par \", $ par \$, ` par \`
|
||||||
# Cela permet de quoter une chaine à mettre entre guillements.
|
# Cela permet de quoter une chaine à mettre entre guillements.
|
||||||
|
@ -129,6 +104,61 @@ function qvals() {
|
||||||
done
|
done
|
||||||
[ -z "$first" ] && echo
|
[ -z "$first" ] && echo
|
||||||
}
|
}
|
||||||
|
function qwc() {
|
||||||
|
# Dans la chaine $*, remplacer \ par \\, " par \", $ par \$, ` par \`, puis
|
||||||
|
# quoter la chaine avec ", sauf les wildcards * et ?
|
||||||
|
# Cela permet de quoter une chaine permettant de glober des fichiers, e.g
|
||||||
|
# eval "ls $(qwc "$value")"
|
||||||
|
# Note: la protection de ! n'est pas effectuée, parce que le comportement du
|
||||||
|
# shell est incohérent entre le shell interactif et les scripts. Pour une
|
||||||
|
# version plus robuste, il est nécessaire d'utiliser un programme externe tel
|
||||||
|
# que sed ou awk
|
||||||
|
local s="$*"
|
||||||
|
s="${s//\\/\\\\}"
|
||||||
|
s="${s//\"/\\\"}"
|
||||||
|
s="${s//\$/\\\$}"
|
||||||
|
s="${s//\`/\\\`}"
|
||||||
|
local r a b
|
||||||
|
while [ -n "$s" ]; do
|
||||||
|
if [[ "$s" == *\** ]]; then
|
||||||
|
if [[ "$s" == *\?* ]]; then
|
||||||
|
a="${s%%\**}"
|
||||||
|
b="${s%%\?*}"
|
||||||
|
if [ ${#a} -lt ${#b} ]; then
|
||||||
|
s="${s#*\*}"
|
||||||
|
r="$r\"$a\"*"
|
||||||
|
else
|
||||||
|
s="${s#*\?}"
|
||||||
|
r="$r\"$b\"?"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
a="${s%%\**}"
|
||||||
|
s="${s#*\*}"
|
||||||
|
r="$r\"$a\"*"
|
||||||
|
fi
|
||||||
|
elif [[ "$s" == *\?* ]]; then
|
||||||
|
if [[ "$s" == *\** ]]; then
|
||||||
|
a="${s%%\**}"
|
||||||
|
b="${s%%\?*}"
|
||||||
|
if [ ${#a} -lt ${#b} ]; then
|
||||||
|
s="${s#*\*}"
|
||||||
|
r="$r\"$a\"*"
|
||||||
|
else
|
||||||
|
s="${s#*\?}"
|
||||||
|
r="$r\"$b\"?"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
a="${s%%\?*}"
|
||||||
|
s="${s#*\?}"
|
||||||
|
r="$r\"$a\"?"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
r="$r\"$s\""
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
recho_ "$r"
|
||||||
|
}
|
||||||
function qlines() {
|
function qlines() {
|
||||||
# Traiter chaque ligne de l'entrée standard pour en faire des chaines quotées
|
# Traiter chaque ligne de l'entrée standard pour en faire des chaines quotées
|
||||||
# avec '
|
# avec '
|
||||||
|
|
Loading…
Reference in New Issue