【发布时间】:2017-10-06 07:59:31
【问题描述】:
我正在尝试将许多 jvm 参数传递给一个变量并将其导出并在其他脚本中调用,但参数中的空格和双引号击败了我。 ("/05 abcdef")
我的代码:
#!/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" "$@"
调试模式下的实际输出:
+ 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
【问题讨论】:
-
欢迎堆栈溢出。它是路径 /05 abcdef 吗?或 05 目录中名为 abcdef 的文件等。因为我可以在错误消息中看到它告诉无法找到类 abcdef,请在同一时间告诉我
-
嗨! “/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
标签: linux bash scripting escaping