當我嘗試執行以下.ksh文件時,參數未按預期傳遞。錯誤參數傳遞給.ksh
ProcessLauncher.ksh:
/usr/java/jdk1.7.0_25/bin/java -Xmx256M $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
這是我執行調用上述.ksh文件中的代碼:
CallingClass:
public static void main(String[] args) {
String[] cmdline = {};
cmdline = new String[]{"ksh", "../scripts/ProcessLauncher.ksh", com.myPackage.CalledClass.class.getName(), "SimpleDF", "1099"};
}
這是調用.ksh文件後執行的代碼:
個CalledClass:
public static void main(String[] args) {
System.out.println("Arguments passed: " + Arrays.toString(args));
if (args.length != 2) {
System.out.println("Invalid arguments");
System.exit(0);
}
}
執行CallingClass#main()方法之後預期結果:
參數傳遞:SimpleDF 1099
執行後實際結果CallingClass#main()方法:個
參數傳遞:SimpleDF 1099個com.myPackage.calledClass
參數無效
完全類名被錯誤地傳遞爲最後一個參數。我在SuSE Linux Enterprise Server(32位)上使用JDK7u25(32位)。但是,當我從.ksh文件中的java命令(即$ 9和$ 10)中移除最後兩個參數時,它工作正常,我得到了預期的結果。
有人能解釋一下這裏發生了什麼嗎?
Potenstiu問題的一部分,但你的ksh腳本應該使用'「$ @」'而不是'$ 1 $ 2 $ 3 ....'(注意雙引號包含在腳本中) – rolfl