As aspas são apenas para impedir a divisão por palavra. Mas você já tem citações em torno da coisa toda.
export EXTRA_JAVA_OPTIONS="-javaagent:myagent.jar=-d 0 -i 1000 -l log2 -c log1"
Eu tenho um shell bash que eu preciso modificar, e eu tenho que definir uma variável em um script e depois chamar outro script. Minha variável, EXTRA_JAVA_OPTIONS
deve ser
-javaagent:myagent.jar="-d 0 -i 1000 -l log2 -c log1"
Então o que eu fiz é
export EXTRA_JAVA_OPTIONS="-javaagent:myagent.jar=\"-d 0 -i 1000 -l log2 -c log1 \""
Então eu chamo meu script e dentro do meu script há o seguinte:
"$JAVACMD" "$EXTRA_JAVA_OPTIONS"
No entanto, isso não produzirá o resultado que desejo. Correndo bash -x eu posso ver que
+ /usr/java/jdk1.6.0_38/bin/java '-javaagent:myagent.jar="-d 0 -i 1000 -l log2 -c log1"'
Se pelo contrário eu fizer:
"$JAVACMD" $EXTRA_JAVA_OPTIONS
Eu tenho uma versão diferente da saída, o que também está errado
+ /usr/java/jdk1.6.0_38/bin/java '-javaagent:myagent.jar="-d' 0 -i 1000 -l log2 -c 'log1"'
Como evito que '
apareça ao imprimir minhas strings ou elas sejam adicionadas pelo shell?
As aspas são apenas para impedir a divisão por palavra. Mas você já tem citações em torno da coisa toda.
export EXTRA_JAVA_OPTIONS="-javaagent:myagent.jar=-d 0 -i 1000 -l log2 -c log1"
Usar uma matriz é uma maneira segura de manter seus argumentos contendo espaços em branco intactos:
EXTRA_JAVA_OPTIONS=(-javaagent:myagent.jar="-d 0 -i 1000 -l log2 -c log1")
"$JAVACMD" "${EXTRA_JAVA_OPTIONS[@]}"