Il existe un moyen plus simple et plus efficace d'utiliser la fonction de suppression native du préfixe / suffixe du shell:
temp="${opt%\"}"
temp="${temp#\"}"
echo "$temp"
${opt%\"}
supprimera le suffixe "
(échappé avec une barre oblique inverse pour empêcher l'interprétation du shell).
${temp#\"}
supprimera le préfixe "
(échappé avec une barre oblique inverse pour empêcher l'interprétation du shell).
Un autre avantage est qu'il ne supprimera les guillemets environnants que s'il y a des guillemets environnants.
BTW, votre solution supprime toujours le premier et le dernier caractère, quels qu'ils soient (bien sûr, je suis sûr que vous connaissez vos données, mais il vaut toujours mieux être sûr de ce que vous supprimez).
Utilisation de sed:
echo "$opt" | sed -e 's/^"//' -e 's/"$//'
(Version améliorée, comme indiqué par jfgagne, se débarrasser de l'écho)
sed -e 's/^"//' -e 's/"$//' <<<"$opt"
Ainsi, il remplace un début "
par rien et un suivi "
par rien aussi. Dans le même appel (il n'est pas nécessaire de diriger et de démarrer un autre sed. En utilisant, -e
vous pouvez avoir plusieurs traitements de texte).
sed "s/^\(\"\)\(.*\)\1\$/\2/g" <<<"$opt"
. Cette syntaxe supprimera qoutes uniquement lorsqu'il existe une paire correspondante.