重複の可能性:
Java でパイプ記号を使用する方法
こんにちは、Java アプリケーションを介して Linux コマンドを実行したいと考えていました。以下のコマンドを実行しても、例外はスローされず、出力も得られません。ただし、Linux コマンド プロンプトから実行した場合、その特定のコマンドは正しく実行されました。また、Java アプリケーションを介して「ls -al」コマンドを実行すると、正しく動作しました。では、どうやってそれを機能させるのですか?
以下がコマンドです。
String cmd = "dir | grep gpc | grep -v 25";
以下は私のJavaプログラムです
public class Test {
public static void main(String[] args) {
//String cmd = "ls -al";
String cmd ="dir | grep gpc | grep -v 25" ;
String property = System.getProperty("user.dir");
System.out.println("current directory:::: "+property);
String cmd =property+File.separator+"test1.sh" ;*/
//String cmd ="ls -al" ;
//String cmd = args[0];
String cmd = dir | grep gpc | grep -v 25;
System.out.println("executing command is:: "+cmd);
//String cmd ="dir | grep gpc | grep -v 25" ;
Runtime run = Runtime.getRuntime();
Process pr = null;
try {
pr = run.exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
try {
pr.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
BufferedReader buf = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line = "";
try {
while ((line = buf.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}