使用Java调用shell脚本时遇到的问题
最近Jackie在搞一个新项目,为了快速完成开发,需要在Java代码里使用shell脚本或者命令,便于快速完成业务需要的功能。Java SDK中关于启动进程执行外部shell命令的API很简单,很直接,所以Jackie直接参考样例就开搞了,原本以为很顺利,结果遇到了一些问题,花费了不少精力才解决。
出于各方面原因,我厂的编程规范不推荐在Java代码里调用shell脚本或者命令,另外Java的开源库非常丰富,所以日常工作中几乎没有场景需要在代码中直接调用shell脚本的需求。这直接导致Jackie欠缺相关使用经验,在简单的问题上花费了相当的时间。
本文记录Jackie在相关API使用过程中遇到的问题。
使用Java调用shell脚本的方法
方法一
这个方法比较直接,简单,适用于一般的场景,比如Jackie当前在做的项目。
Process process = Runtime.getRuntime().exec(shellCommand);
方法二
这个方法相对要复杂一些,但对于需要向脚本传递参数的场景,会非常方便。但Jackie在项目里没有遇到类似的场景,所以没有使用这种方法。
ProcessBuilder processBuilder = new ProcessBuilder(shellCommand, param1, param2);
注意事项
在Java代码中调用shell脚本或者命令时,有一些小细节要注意,否则等程序运行起来,就会发现各种小问题。
shell脚本的格式需要为unix格式,如果不是的话&#