2 votes

Bash exporte et utilise des variables avec des guillemets et des espaces dans script.

J'essaie de passer plusieurs paramètres jvm à une variable et de l'exporter pour l'appeler dans un autre script, mais l'espace et les doubles guillemets dans les paramètres m'empêchent d'y arriver. ("/05 abcdef")

Mon code :

#!/bin/bash
NORMAL_VARIABLE=-DNORMAL.NormalText=normal124
PROBLEMATIC_VARIABLE='-DPROBLEM.ProblematicText="/05 abcdef"'
SUM="$NORMAL_VARIABLE $PROBLEMATIC_VARIABLE"
export SUM

Cible script :

java $SUM -jar "ApacheJMeter.jar" "$@"

Sortie réelle en mode débogage :

+ NORMAL_VARIABLE=-DNORMAL.NormalText=normal124
+ PROBLEMATIC_VARIABLE='-DPROBLEM.ProblematicText="/05 abcdef"'
+ SUM='-DNORMAL.NormalText=normal124 -DPROBLEM.ProblematicText="/05 abcdef"'
+ export SUM
+ java -DNORMAL.NormalText=normal124 '-DPROBLEM.ProblematicText="/05' 'abcdef"' -jar ApacheJMeter.jar
Error: Could not find or load main class abcdef"

Quelqu'un a-t-il une idée pour résoudre ce problème ?

Je veux obtenir :

java -DNORMAL.NormalText=normal124 -DPROBLEM.ProblematicText="/05 abcdef" -jar ApacheJMeter.jar

2voto

choroba Points 56333

Si vous utilisez bash, vous pouvez utiliser des tableaux.

#!/bin/bash
NORMAL_VARIABLE=-DNORMAL.NormalText=normal124
PROBLEMATIC_VARIABLE=-DPROBLEM.ProblematicText="/05 abcdef"
SUM=($NORMAL_VARIABLE "$PROBLEMATIC_VARIABLE")

Et puis

java "${SUM[@]}" -jar "ApacheJMeter.jar" "$@"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X