java shell_从java代码运行shell脚本

你的代码是正确的,我相信你没有得到异常,如果你使用proc.getErrorStream()读取,你将得不到任何东西.

命令100%以这种方式执行,已经说过现在的事情就是你正在回应一些东西,你需要使用BufferedReader读回它.

检查下面的示例,该示例将成功创建名为“stackOverflow”的目录并打印您正在回显的内容.对于将其放入日志文件中,我担心您可以使用“>”来执行此操作,您可能必须使用某些编辑器命令或使用Java创建文件.

底线:Runtime.getRuntime().exec(“command”)是从Java执行Unix命令或脚本的正确和定义的方法.

test.sh

#!/bin/bash

echo "hola"

mkdir stackOverflow

Test.java

import java.io.*;

public class Test {

public static void main(String[] args) throws Exception {

try {

String target = new String("/home/hagrawal/test.sh");

// String target = new String("mkdir stackOver");

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(target);

proc.waitFor();

StringBuffer output = new StringBuffer();

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

String line = "";

while ((line = reader.readLine())!= null) {

output.append(line + "

");

}

System.out.println("### " + output);

} catch (Throwable t) {

t.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值