【发布时间】:2015-01-06 20:18:29
【问题描述】:
我需要将 cmd 参数传递给我的 bash 脚本,但它一直在去掉引号。
下面是一个例子。在我的脚本中,我添加了一些额外的处理,在处理命令之前我将数据添加到我的第一个变量
$> ./test.sh -t some.comman -extraswitch "some addtional info"
脚本使用 Java 进行一些处理,但“一些附加信息”缺少引号,因此无法执行该脚本的 Java 部分。如何保留命令行中的引号,以便在脚本中执行 Java 命令?
脚本中的 Java 命令
java $JAVA_OPTS "$@"
输出
java lib -someoption -anotheroption -javalibswitch some additional info
预期输出
java lib -someoption -anotheroption -javalibswitch "some additional info"
【问题讨论】:
-
$> ./test.sh -t some.comman -extraswitch '"some addtional info"'应该这样做 -
"$@"将正确地将参数传递给java。您的 java 程序以何种方式无法处理其参数? -
请准确分享您在脚本中所做的事情。如果您正在使用参数或使用 shell 函数定义,上述命令的行为会有所不同。
-
使用反斜杠
"\"stuff\"" -
由于您显示的调用与您声称不起作用的
java命令行不匹配,我认为您的问题在于JAVA_OPTS,而不是$@。