Java Bash剥离引号-如何保留引号

Java Bash剥离引号-如何保留引号,java,bash,shell,env,Java,Bash,Shell,Env,我需要将cmd参数传递给我的bash脚本,但它一直在剥离引号 下面是一个例子。在我的脚本中,我添加了一些额外的处理,在处理命令之前向第一个变量添加数据 $> ./test.sh -t some.comman -extraswitch "some addtional info" 该脚本使用Java进行一些处理,但是“一些附加信息”缺少引号,因此无法执行该脚本的Java部分。如何保留命令行中的引号,以便在脚本中执行Java命令 脚本中的Java命令 输出 java lib -someopti

我需要将cmd参数传递给我的bash脚本,但它一直在剥离引号

下面是一个例子。在我的脚本中,我添加了一些额外的处理,在处理命令之前向第一个变量添加数据

$> ./test.sh -t some.comman -extraswitch "some addtional info"
该脚本使用Java进行一些处理,但是“一些附加信息”缺少引号,因此无法执行该脚本的Java部分。如何保留命令行中的引号,以便在脚本中执行Java命令

脚本中的Java命令 输出

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\"

我通常使用单引号来避免在要引用带有引号的字符串时使用shell插值

./test.sh -t some.comman -extraswitch '"some addtional info"'

$>。/test.sh-t some.comman-extraswitch's“some additional info”
应该这样做
“$@”
将正确地将参数传递给java。您的java程序以何种方式无法处理其参数?请准确分享您在脚本中所做的操作。如果您在玩弄参数或使用shell函数定义,上述命令的行为将有所不同。请使用反斜杠
“stuff\”
,因为您显示的调用与您声称无效的
java
命令行不匹配,我想您的问题在于
java\u OPTS
,没有
$@
。这肯定是一个糟糕的答案:
测试。sh
将看到6个参数:
-t
一些.comman
-extraswitch
附加的
信息
。您应该将答案编辑为:
/test.sh-t一些.comman-extraswitch“\“一些附加信息”
我必须通过crontab调用此脚本。我有多个crontab条目,看起来像我的示例,其中我必须将完整的cmd字符串传递给java以执行。我试图避免在每个crontab条目上硬转义引号,即“\”,因为我希望有一种更通用的方法将包含引号的值传递给java。引用的部分主要是由java处理的附加sql,这就是为什么我需要传递引用,否则我们将不得不对我们的独立java作业进行大规模返工。我宁愿让我的脚本处理引用,而不是更改所有的crontab项。这样做行不通。shell会在这些引号到达脚本运行的进程之前剥离它们。如果希望将文字引号传递给脚本,则必须引用该引号。
./test.sh -t some.comman -extraswitch '"some addtional info"'