Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java运行.sh_Java_Bash_Ubuntu - Fatal编程技术网

使用Java运行.sh

使用Java运行.sh,java,bash,ubuntu,Java,Bash,Ubuntu,我有一个shell脚本,我正试图从Java调用它。shell脚本包含: cat /dev/tty.USB0 > file.txt 在我的Java代码中,我使用的是: Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh"); 但它不起作用。当我从终端运行它时,它会按预期工作。您不能像这样直接执行.sh脚本,因为它不是可执行文件。相反,您必须运行/bin/sh-c/home/myname/Scriv

我有一个shell脚本,我正试图从Java调用它。shell脚本包含:

cat /dev/tty.USB0 > file.txt
在我的Java代码中,我使用的是:

Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");

但它不起作用。当我从终端运行它时,它会按预期工作。

您不能像这样直接执行
.sh
脚本,因为它不是可执行文件。相反,您必须运行
/bin/sh-c/home/myname/Scrivania/capture.sh

首先,在Java代码中使用基于操作系统的功能不是一种好的方式。相反,我建议您只使用系统输入/输出流。例如,如果您的程序应该处理脚本的输出,您可以执行以下操作:

cat /dev/tty.USB0 > java YourMainClass 
然后在中直接使用
系统


即使您的程序比脚本输出使用者更复杂,您也可以重写它以从程序中删除所有基于操作系统的部分,这将使您的代码更加稳定和可维护。

您所做的工作正常。嗯,应该是这样

我的猜测是:您可能在错误的位置查找输出文件“file.txt”

这里有一个小实验

System.out.println("Output file - " + new File("file.txt"));
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");
第一行应该告诉您在哪里查找文件

当然,请记住导入java.io.File:)

可能重复的