当前位置: 首页 > 面试题库 >

从Java执行Shell脚本,具有读取操作的Shell脚本

宋和颂
2023-03-14
问题内容

我有一个读取输入的Shell脚本

#!/bin/bash
echo "Type the year that you want to check (4 digits), followed by [ENTER]:"
read year
echo $year

我正在使用JAVA APi执行此Shell脚本

ProcessBuilder pb = new ProcessBuilder("/bin/bash", "/junk/leaptest.sh");
final Process process = pb.start();

InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;


while ((line = br.readLine()) != null) {
    System.out.println(line);       
}
System.out.println("Program terminated!");

在Java控制台中,我可以看到输出

键入要检查的年份(4位数字),然后按[ENTER]:

现在,如何将值传递到我脚本中的Shell脚本中的实际问题是如何读取变量“ year”

我已经按照建议编辑了代码,但在我们更正的地方无法正常工作

ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", "/junk/leaptest.sh");
final Process process = pb.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
/*
 * OutputStream os = process.getOutputStream(); PrintWriter pw = new
 * PrintWriter(os);
 */

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
while ((line = br.readLine()) != null) {
    System.out.println(line);
    // pw.println("8999");
    bw.write("2012");
}
System.out.println("Program terminated!");

问题答案:

要将执行脚本的Java程序中的值传递给脚本,请使用命令行参数。如果要将信息从脚本发送回Java程序,请在脚本中打印该值,请在Java程序中读取脚本的STDOUT并进行解析。

你真的快到了。现在,您正在读取脚本输出(进入while循环),但是您只是在打印它。解析输出并执行所需的操作。



 类似资料:
  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 本文向大家介绍Android 从Gradle执行Shell脚本,包括了Android 从Gradle执行Shell脚本的使用技巧和注意事项,需要的朋友参考一下 示例 Shell脚本是一种非常通用的方法,可以将您的构建扩展到您能想到的任何东西。 例如,这是一个简单的脚本,用于编译protobuf文件并将结果java文件添加到源目录中以进行进一步编译: 此示例的“ pbScript.sh” shell

  • 我有SunOs 5.10 unix服务器,在那里我编写了一个脚本来执行java文件,如下所示 在这个脚本中,有很多代码,其中包括日志文件,以及在导出JAVA HOME之前添加的其他二进制文件类路径。但当我执行时,我得到以下错误 我更改了很多java版本,但都出现了相同的错误

  • 我有一个shell脚本,它执行sql构建工作。 当从unix提示符手动调用它时,它正在执行并按预期给出结果。 但是当它从java调用时,它并没有完全执行。 手动执行: MODIFY_PATCH_CREATION. ksh 118765CP_14052906_28112015134449_16 日志文件显示为: 但是如果我从java程序执行相同的操作,如下所示: Java代码: 当作为java Sh

  • 我在尝试编译 eXo 平台时遇到麻烦。 错误消息是: < code >原因:java.io.IOException:无法运行程序“/exo/platform-public-distributions-develop/PLF-community-Tomcat-standalone/target/platform-community-5.0 . x-SNAPSHOT/platform-communit