implémenter _rval(), pour corriger un bug avec le listage de fichiers avec des espaces
This commit is contained in:
parent
418753bf89
commit
b64cb98dad
|
@ -1 +1 @@
|
|||
007011000
|
||||
007012000
|
||||
|
|
|
@ -1304,7 +1304,8 @@ function __la_cmd() {
|
|||
local arg
|
||||
local cmd="/bin/ls -1d"
|
||||
for arg in "$@"; do
|
||||
cmd="$cmd $(quote_arg "$arg")"
|
||||
arg="$(_rval "$arg")"
|
||||
cmd="$cmd $arg"
|
||||
done
|
||||
cmd="$cmd 2>/dev/null"
|
||||
echo "$cmd"
|
||||
|
|
|
@ -29,6 +29,23 @@ function recho_() {
|
|||
echo -n "$@"
|
||||
fi
|
||||
}
|
||||
function _rval() {
|
||||
# Dans la chaine $*, remplacer \ 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// /\\ }"
|
||||
recho_ "$s"
|
||||
}
|
||||
function _qval() {
|
||||
# Dans la chaine $*, remplacer \ par \\, " par \", $ par \$, ` par \`
|
||||
# Cela permet de quoter une chaine à mettre entre guillements.
|
||||
|
|
Loading…
Reference in New Issue