gpt4 book ai didi

java - 从 Java 执行包含 while 循环的 shell 脚本

转载 作者:行者123 更新时间:2023-12-02 05:50:02 26 4
gpt4 key购买 nike

我在执行包含 while 循环的 shell 脚本时遇到了严重问题。这是我的 shell 脚本:

echo Here 1
sleep 0.05
echo Here 2
sleep 0.05
echo Here 3

ic=70
while [ $ic -ge 40 ]
do
#sleep 0.05
ic=$[$ic-1]
echo Here $ic
done

当我从终端正常执行脚本 /home/pi/tbe/testSleep.sh 时,它正在工作。并打印所有的echo

现在我已经编写了这个java方法来执行该文件:

public static void main(String[] args) throws IOException, InterruptedException {       
String command = "/home/pi/tbe/testSleep.sh";
System.out.println("Executing command: " + command);

Process process = new ProcessBuilder(command).start();

BufferedReader reader = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line = null;

while ((line = reader.readLine()) != null) {
System.out.println(line);
}

process.waitFor();
int exitValue = process.exitValue();
System.out.println("Command executed. Exit value: " + exitValue);
process.destroy();
}

当我执行它时,我只能看到以下输出:

Executing command: /home/pi/tbe/testSleep.sh
Here 1
Here 2
Here 3
Here $[70-1]
Command executed. Exit value: 0

这确实很奇怪。任何指针都会对我非常有帮助。

最佳答案

执行该命令的 shell 似乎与您在命令行上运行脚本的 shell 不同。将 shell 指定为 bash。

在脚本中添加 shebang(作为第一行)。在脚本中具体说明 shell 始终是一个好习惯

#!/bin/bash

您还可以指定要用于 shell 脚本的 shell

String[] command = {"/bin/bash", "/home/pi/tbe/testSleep.sh"};

关于java - 从 Java 执行包含 while 循环的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com