Shell 跟Java 相互调用和获取结果

31人阅读 评论(0) 收藏 举报

很简单的Shell 跟Java 相互调用和获取结果:

被调用的shell

a.sh

Shell代码

  1. #!/bin/bash   
  2. echo 111  
  3. exit 8  

java 代码

  1. public static void main(String[] args) throws IOException {   
  2.     Process p = Runtime.getRuntime().exec(command);   
  3.     InputStream is = p.getInputStream();   
  4.     int data;   
  5.     StringBuffer strBuffer = new StringBuffer();   
  6.     while ((data = is.read()) != -1) {   
  7.         strBuffer.append((char) data);   
  8.     }   
  9.        
  10.     System.out.println("命令:\n" + command);   
  11.     System.out.println("结果:\n" + p.exitValue());   
  12.     System.out.println("log:\n" + strBuffer.toString());   
  13.     int ret = p.exitValue(); // 全路径   
  14.     System.exit(ret); // 直接返回shell执行的结果   
  15. }  

调用java的shell

test.sh

  1. #!/bin/bash   
  2. #调用java打包后的jar文件   
  3. java -jar test.jar   
  4. #显示执行结果   
  5. echo $? 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过使用Runtime类或ProcessBuilder类来远程调用shell脚本并获取输出信息。 使用Runtime类的示例代码如下: ```java public class RemoteShellDemo { public static void main(String[] args) { String command = "ls -l"; try { Process process = Runtime.getRuntime().exec(command); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } process.waitFor(); reader.close(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 使用ProcessBuilder类的示例代码如下: ```java public class RemoteShellDemo { public static void main(String[] args) { String command = "ls -l"; try { ProcessBuilder processBuilder = new ProcessBuilder(command.split(" ")); Process process = processBuilder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } process.waitFor(); reader.close(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 以上两种方式都可以通过执行shell命令来远程调用shell脚本,并使用BufferedReader来读取输出信息并打印。请注意,读取输出是阻塞的,需要等待命令执行完毕。 当然,在实际应用中,为了远程调用shell脚本,你需要配置好网络连接和权限等,确保能够正常访问并执行远程服务器上的shell脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值