Java调用shell脚本及参数传递

Java调用shell脚本及参数传递

需求

项目需求:由于Python没有提供Http请求的接口,而是以脚本的方式调用,Java需要调用pyhon脚本得到结果返回写入文件,然后Java再读取写入的文件,拿到结果页面展示。
坑:这种方式适合单线程模式,不是个多个请求并发,写入的文件是固定的,并发情况下,第一的请求如果读取的是第二次请求的结果,就会有问题。

脚本示例

Java代码不是直接调用python脚本,而是先调用shell脚本,shell脚本再调用python脚本,Java如果直接调用python会出一些问题。

#!/bin/bash
python xx/xx/xx/xx.py -a $1 -b $2 -c $3

执行代码封装工具类

这里参数的传递必须使用String数组的形式进行传递,如果直接传递下面的命令会造成有的脚本好用,有的出错。
bashCommand示例(参数用空格间隔):

sh xx/xx/xx/xx.sh "a1" "a2" "a3"
public class ExecUtil {
	/**
	 * 执行Shell脚本 0成功 1失败
	 */
	public static int execSh(String bashCommand) throws IOException, InterrruptedException {
		Runtime runtime = Runtime.getRuntime();
		String[] bash = {"/bin/bash", "-c", bashCommand};
		Process exec = runtime.exec(bash);
		int status = exec.waitFor();
		if(status != 0) {
			return 1;
		}
		return status;
	}
}

最后

不是特殊情况,不推荐Java这样调用Python,最好还是能提供一个Http接口进行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值