java调用shell脚本传参数
时间: 2023-06-05 09:47:33 浏览: 174
使用Java调用shell脚本时,可以使用Java Runtime类的exec()方法来传递参数。可以将参数作为字符串传递给exec()方法,可以使用空格或其他分隔符分隔参数。或者,也可以将参数作为字符串数组传递给exec()方法。在shell脚本中使用这些参数可以像在命令行中使用参数一样使用$1,$2等等。
相关问题
java 调用shell脚本
Java 可以使用 `ProcessBuilder` 或 `Runtime` 类来调用 Shell 脚本。
1. 使用 `ProcessBuilder`
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RunShellScript {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "/path/to/script.sh", "arg1", "arg2");
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("脚本执行完毕,退出码为:" + exitCode);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
以上代码中,我们使用 `ProcessBuilder` 创建一个进程并执行 Shell 脚本。其中,`/bin/bash` 是 Shell 的路径,`/path/to/script.sh` 是脚本的路径,`arg1` 和 `arg2` 是传递给脚本的参数。`redirectErrorStream(true)` 是将标准错误输出流合并到标准输出流中,以便我们可以同时处理输出信息和错误信息。最后,我们使用 `process.waitFor()` 等待进程执行完毕,并获取进程的退出码。
2. 使用 `Runtime`
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RunShellScript {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("/bin/bash /path/to/script.sh arg1 arg2");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("脚本执行完毕,退出码为:" + exitCode);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
以上代码中,我们使用 `Runtime.getRuntime().exec()` 创建一个进程并执行 Shell 脚本。其中,`/bin/bash /path/to/script.sh arg1 arg2` 是要执行的命令。其余部分和 `ProcessBuilder` 的代码相同。
使用 `ProcessBuilder` 更加灵活,可以设置工作目录、环境变量等参数。而使用 `Runtime` 简单直接,适用于简单的脚本调用场景。
java调用shell脚本,shell脚本如何返回码值
Java调用shell脚本可以使用Java的Runtime类或ProcessBuilder类。在shell脚本中,可以使用exit命令来设置返回码值。例如,使用exit 0表示成功,使用exit 1表示失败。Java中可以通过Process类的waitFor()方法获取shell脚本的返回码值。
以下是一个示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShellCommand {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("sh /path/to/your/shell/script.sh");
int exitCode = process.waitFor();
System.out.println("Shell script exit code: " + exitCode); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
上述代码中,我们使用Runtime类的exec()方法执行shell脚本,并使用waitFor()方法等待shell脚本执行完成。然后,我们可以使用exit命令设置shell脚本的返回码值,并使用System.out.println()方法输出返回码值。
阅读全文
相关推荐












