gpt4 book ai didi

java - Shell 参数未正确传递给 Java 类

转载 作者:行者123 更新时间:2023-12-01 18:58:59 25 4
gpt4 key购买 nike

我编写了一个简短的 shell 脚本,它接受参数,检查它们(因为它们是“可选的”,如果它们为空,则设置默认值),然后将它们传递给服务器上的 Java 类。基本上,就像这样:

x=${2:-'Default'}
y=${3:-'Default Name Has Spaces'}
echo \"$x\"
echo \"$y\"
java -d64 -ms3G -mx3G -cp example.jar -Djava.security.policy=policy com.example.JavaClass $1 \"$x\" \"$y\"

但是,当 shell 调用 Java 类时,我只是得到(如果使用上述默认值)“参数名称无法识别”。

echo 周围使用转义引号在第 3 行和第 4 行,我看到变量设置正确,并且它们的回显如下所示: "Default""Default Name Has Spaces" ,但即使在 Java 调用中使用转义引号,它们似乎还是作为两个以上的参数传递——就像它们作为 java -d64 -ms3G -mx3G -cp example.jar -Djava.security.policy=policy com.example.JavaClass $1 Default Default Name Has Spaces" 传递一样。失败是因为 Java 类只需要三个参数。

有人知道为什么或如何使论点正确通过吗?

最佳答案

问题是您引用了 ",这阻止了它引用参数。只需删除反斜杠,您就应该设置:

x=${2:-'Default'}
y=${3:-'Default Name Has Spaces'}
echo "$x"
echo "$y"
java -d64 -ms3G -mx3G -cp example.jar -Djava.security.policy=policy com.example.JavaClass $1 "$x" "$y"

关于java - Shell 参数未正确传递给 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com