【发布时间】:2018-06-05 11:44:00
【问题描述】:
我希望我的代码实现的是调用可用的两个 shell 脚本之一并执行一些命令,其输出将打印在 .txt 文件中。
到目前为止,我已经设法实现了这一点(通过调用第一个脚本),但是当我尝试调用第二个脚本时,终端没有打开,并且命令的输出没有附加到 .txt 文件中。
我的代码如下:
File file = new File("res/script1.sh");
String absolutePath = file.getAbsolutePath();
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("open -a Terminal "+absolutePath);
执行此操作后,.txt 文件包含短语“Hello World”。
我的第一次尝试是将/script1.sh 更改为/script2.sh,因为我认为第二次尝试会在.txt 文件的第二行中附加另一个“Hellow World”。这不起作用,因为文件的内容保持不变,与第一种情况相反,终端甚至没有打开。
我还尝试复制两个脚本的代码,并根据输入值 i==1 或 i==2 执行其中一个,但没有成功。
任何想法为什么我不能使第二个脚本工作,即使它与第一个相同?
我的脚本代码
#!/bin/sh
cd "$(dirname "$0")"
echo Hello World >> output.txt
exit
【问题讨论】:
-
为什么要打开终端并运行脚本,而不是简单地在子进程中运行脚本?
-
我是 shell 脚本的新手,所以我认为这是正确的方法。我的首要任务是运行命令并接收它的输出。如您所说,这可以以更“适当”的方式实现吗?
-
贴出所有代码。
-
如果shell脚本有适当的shebang,在子进程中运行脚本。它会起作用的。
-
我还添加了我的脚本代码。
标签: java bash shell absolute-path