Bash导出并在脚本中使用引号和空格变量
我试图将许多jvm参数传递给一个变量并将其导出并在其他脚本中调用,但参数中的空格和双引号打败了我。 ( “/ 05 ABCDEF”)Bash导出并在脚本中使用引号和空格变量
我的代码:
#!/bin/bash
NORMAL_VARIABLE=-DNORMAL.NormalText=normal124
PROBLEMATIC_VARIABLE='-DPROBLEM.ProblematicText="/05 abcdef"'
SUM="$NORMAL_VARIABLE $PROBLEMATIC_VARIABLE"
export SUM
目标脚本:
java $SUM -jar "ApacheJMeter.jar" "[email protected]"
在调试模式
实际输出:
+ 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"
人有一个想法如何解决这个问题?
我想:
java -DNORMAL.NormalText=normal124 -DPROBLEM.ProblematicText="/05 abcdef" -jar ApacheJMeter.jar
如果你正在使用bash,你可以使用数组。
#!/bin/bash
NORMAL_VARIABLE=-DNORMAL.NormalText=normal124
PROBLEMATIC_VARIABLE=-DPROBLEM.ProblematicText="/05 abcdef"
SUM=($NORMAL_VARIABLE "$PROBLEMATIC_VARIABLE")
然后
java "${SUM[@]}" -jar "ApacheJMeter.jar" "[email protected]"
数组对PROBLEMATIC_VARIABLE有什么好处?似乎如果它是单引号中的字符串,它的工作方式会相同。 –
@TomFenech:确实如此。 – choroba
我认为需要单引号,否则双引号将是句法。 –
欢迎堆栈溢出。它是一个路径/ 05 abcdef?或者在05目录中名为abcdef的文件等。因为我可以看到错误消息,它告诉找不到类abcdef,让我知道在同一 – RavinderSingh13
嗨! “/ 05 abcdef”是参数的值。 问题是巫调用Java: '的java -DNORMAL.NormalText = normal124 '-DPROBLEM.ProblematicText = “/ 05' ' ABCDEF”'-jar ApacheJMeter.jar' 代替: '的java -DNORMAL.NormalText = normal124 -DPROBLEM.ProblematicText =“/ 05 abcdef”-jar ApacheJMeter.jar“ –