Java调用Shell命令和脚本
时间: 2024-03-21 10:38:51 浏览: 57
java调用shell脚本
5星 · 资源好评率100%
Java可以通过Runtime和ProcessBuilder类来调用Shell命令和脚本。下面是一个简单的示例:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShellCommand {
public static void main(String[] args) {
try {
// 执行Shell命令
Process process = Runtime.getRuntime().exec("ls -al");
// 读取Shell命令的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待Shell命令执行完毕
int exitCode = process.waitFor();
System.out.println("Shell命令执行完毕,退出码为:" + exitCode);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在上述示例中,我们通过Runtime类的exec()方法执行了一个Shell命令,然后通过Process类的getInputStream()方法获取了Shell命令的输出流,并通过BufferedReader类逐行读取了输出内容。最后,我们通过Process类的waitFor()方法等待Shell命令执行完毕,并获取了Shell命令的退出码。
类似地,我们也可以使用ProcessBuilder类来执行Shell脚本。以下是一个示例:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class ShellScript {
public static void main(String[] args) {
try {
// 执行Shell脚本
ProcessBuilder builder = new ProcessBuilder(Arrays.asList("/bin/bash", "-c", "./test.sh"));
Process process = builder.start();
// 读取Shell脚本的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待Shell脚本执行完毕
int exitCode = process.waitFor();
System.out.println("Shell脚本执行完毕,退出码为:" + exitCode);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在上述示例中,我们使用ProcessBuilder类创建了一个Shell进程,并指定了要执行的Shell脚本。然后通过Process类的getInputStream()方法获取了Shell脚本的输出流,并通过BufferedReader类逐行读取了输出内容。最后,我们通过Process类的waitFor()方法等待Shell脚本执行完毕,并获取了Shell脚本的退出码。
阅读全文