4

Javaクラスを呼び出すためのスクリプトrun.shを以下に記述しました。

java -cp . Main $1 $2 $3 $4

これが私のJavaクラスです(引数を表示するだけです):

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

スペースを含むパラメーターを渡そうとしない限り、これは機能します。例えば ​​:

./run.sh This is "a test"

表示されます:

This
is
a
test

シェルスクリプトを変更したり、パラメータ構文を変更して、パラメータ「テスト」を変更せずに渡すにはどうすればよいですか?

4

2 に答える 2

9

このような:

java -cp . Main "$@"
于 2012-05-14T03:25:08.453 に答える
4

スクリプト内のすべてのパラメータもマスクする必要があります。

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
于 2012-05-14T03:32:38.550 に答える