Shell脚本和java参数

Arn*_*aud 4 java unix shell command-line-arguments

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

java -cp . Main $1 $2 $3 $4
Run Code Online (Sandbox Code Playgroud)

这是我的java类(它只显示args):

public class Main {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

./run.sh This is "a test"
Run Code Online (Sandbox Code Playgroud)

将显示:

This
is
a
test
Run Code Online (Sandbox Code Playgroud)

我怎样才能修改我的shell脚本和/或更改我的参数语法以传递未经修改的参数"a test"?

Ign*_*ams 9

像这样:

java -cp . Main "$@"
Run Code Online (Sandbox Code Playgroud)

  • 如果您解释*为什么*有效,这可能会有所帮助.这是一个非常人为的例子.这可能不是他最终想做的事情. (2认同)