Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本和java参数_Java_Shell_Unix_Command Line Arguments - Fatal编程技术网

Shell脚本和java参数

Shell脚本和java参数,java,shell,unix,command-line-arguments,Java,Shell,Unix,Command Line Arguments,我在下面编写了调用java类的脚本run.sh: java -cp . Main $1 $2 $3 $4 这是我的java类(它只显示参数): 除非我尝试传递一个包含空格的参数,否则这是有效的。例如: ./run.sh This is "a test" 将显示: This is a test 我如何修改shell脚本和/或更改参数语法以未经修改地通过参数“a测试”?如下所示: java -cp . Main "$@" 您还必须屏蔽脚本中的每个参数: java -cp . Main "$1

我在下面编写了调用java类的脚本run.sh

java -cp . Main $1 $2 $3 $4
这是我的java类(它只显示参数):

除非我尝试传递一个包含空格的参数,否则这是有效的。例如:

./run.sh This is "a test"
将显示:

This
is
a
test
我如何修改shell脚本和/或更改参数语法以未经修改地通过参数“a测试”?

如下所示:

java -cp . Main "$@"

您还必须屏蔽脚本中的每个参数:

java -cp . Main "$1" "$2" "$3" "$4"
现在参数4应该是空的,而$3应该是“测试”

要验证,请尝试:

#!/bin/bash
echo 1 "$1"
echo 2 "$2"
echo 3 "$3"
echo 4 "$4"
echo all "$@"
叫它

./params.sh This is "a test" 
1 This
2 is
3 a test
4 
all This is a test

如果你能解释一下为什么这样做会有帮助。这是一个相当做作的例子。这可能不是他最终想要做的。参数4是空字符串这一事实令人恼火,因为java程序将收到错误数量的参数(4,而用户只传递了3)。“我认为伊格纳西奥的答案更好,谢谢你。”超级沙芬:哦,我明白了,我的测试不准确。在看到测试的输出后,我以为“$@”会使用屏蔽,但我猜这是最后一个回音,它会使用引号,就像Java程序一样。
./params.sh This is "a test" 
1 This
2 is
3 a test
4 
all This is a test