tag:linuxfr.org,2005:/users/magnig/postsLinuxFr.org : les publications de Gabriel MAGNIEZ2010-12-23T12:18:07+01:00/favicon.pngtag:linuxfr.org,2005:Post/295172010-12-23T12:18:07+01:002010-12-23T12:18:07+01:00Echappement de variable étrange avec Bash
Bonjour à tous,<br />
<br />
Voici mon problème : j'ai un script shell qui configure une jvm pour le lancement de tomcat en assignant des paramètres à la variable JAVA_OPTS.<br />
Je souhaiterais indiquer à ma jvm de s'arrêter lors d'une "OutOfMemoryException", pour ça la jvm de sun fournit le paramètre "-XX:OnOutOfMemoryError=" auquel on fournit la commande à exécuter.<br />
Sauf que dans mon cas, Bash échappe de façon incongrue mes paramètres, dans mon script j'ai : <br />
<br />
<pre><br />
[...]<br />
export JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"<br />
export JAVA_OPTS="$JAVA_OPTS -XX:OnOutOfMemoryError=\"kill -9 %p\""<br />
[...]<br />
</pre><br />
<br />
et la jvm refuse de démarrer :<br />
<pre><br />
Unrecognized option: -9<br />
Could not create the Java virtual machine.<br />
</pre><br />
<br />
J'ai utilisé "set -x" pour voir ce qui était exécuté et je m'aperçois que Bash échappe n'importe comment une partie de la variable "JAVA_OPTS" : <br />
<pre><br />
... -XX:+DisableExplicitGC '-XX:OnOutOfMemoryError="kill' -9 '%p"' -D...<br />
</pre><br />
Comme on peux le voir il ajoute des simples quotes au début jusqu'au premier espace. Du coup ma commande "kill -9 %p" qui devait être un seul paramètre est interprété comme 3 par java.<br />
<br />
Quelqu'un aurait-il une idée du pourquoi du comment?<br />
Merci d'avance.<div><a href="https://linuxfr.org/forums/programmation-shell/posts/echappement-de-variable-%C3%A9trange-avec-bash.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/84006/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-shell/posts/echappement-de-variable-%C3%A9trange-avec-bash#comments">ouvrir dans le navigateur</a>
</p>
Gabriel MAGNIEZhttps://linuxfr.org/nodes/84006/comments.atom