URL: https://linuxfr.org/forums/programmation-shell/posts/echappement-de-variable-%C3%A9trange-avec-bash Title: Echappement de variable étrange avec Bash Authors: Gabriel MAGNIEZ Date: 2010年12月23日T12:18:07+01:00 Tags: Score: -1 Bonjour à tous, 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. 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. Sauf que dans mon cas, Bash échappe de façon incongrue mes paramètres, dans mon script j'ai : [...] export JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC" export JAVA_OPTS="$JAVA_OPTS -XX:OnOutOfMemoryError=\"kill -9 %p\"" [...] et la jvm refuse de démarrer : Unrecognized option: -9 Could not create the Java virtual machine. 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" : ... -XX:+DisableExplicitGC '-XX:OnOutOfMemoryError="kill' -9 '%p"' -D... 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. Quelqu'un aurait-il une idée du pourquoi du comment? Merci d'avance.