1

次のJavaコードがあります

ArrayList<String> argList = new ArrayList<>();
argList.add("Hello");
argList.add("World");
String[] args = argList.toArray(new String[argList.size()]);

Process p =Runtime.getRuntime().exec("echo '$1 $2' ", args);

結果は$1 $2だけど印刷したいHello World。誰でも私を助けることができますか?

4

4 に答える 4

1

Echo はすべての引数をそのまま出力します。あなたの場合、「$1 $2」は通常の文字列として解釈されます.とにかくすべての引数を出力するので、以下のようなものを使用できます。

  ProcessBuilder pb= new ProcessBuilder().command("/bin/echo.exe", "hello", "world\n");

mycommands.sh 別のオプションは、適切な内容で言う小さなスクリプトを共同作成することです

   echo $@ 
   echo $1 $2  
   #any such

次に、スクリプトを呼び出します...のように

  ProcessBuilder pb= new ProcessBuilder().command("/bin/bash" , "-c", "<path to script > ", "hello", "world\n");

ProcessBuilder の使用に注意してください。これはランタイムの代わりに改善された API です。(特に引用など)

于 2013-08-31T09:01:53.000 に答える