Mise à jour
Une réponse simple et élégante de Suppression des guillemets simples et doubles dans une chaîne de caractères en utilisant uniquement bash / les commandes Linux standard :
BAR=$(eval echo $BAR)
bandes citées de BAR
.
\=============================================================
Sur la base de la réponse de hueybois, j'ai créé cette fonction après de nombreux essais et erreurs :
function stripStartAndEndQuotes {
cmd="temp=\${$1%\\\"}"
eval echo $cmd
temp="${temp#\"}"
eval echo "$1=$temp"
}
Si vous ne voulez pas que quelque chose soit imprimé, vous pouvez envoyer les évaluations à /dev/null 2>&1
.
Utilisation :
$ BAR="FOO BAR"
$ echo BAR
"FOO BAR"
$ stripStartAndEndQuotes "BAR"
$ echo BAR
FOO BAR
0 votes
Je suggère d'utiliser
sed "s/^\(\"\)\(.*\)\1\$/\2/g" <<<"$opt"
. Cette syntaxe ne supprime les qoutes que lorsqu'il existe une paire correspondante.0 votes
@JohnSmith Je dois également échapper automatiquement aux guillemets dans un shell script, mais je dois le faire qu'ils correspondent ou non, donc je n'utiliserai probablement pas l'expression que vous avez postée.
0 votes
Si vous avez trouvé cette question en voulant simplement supprimer toutes les citations, voyez cette réponse : askubuntu.com/a/979964/103498 .