概述从Java运行Linux命令 – runtime.exe
我想使用Java运行时运行以下命令:
find /home/Alison/workspace/FunctionalTestFramework/src/com/q1labs/qa/selenium/screens -type d | awk -F/ \’NF <= old_NF {print prev} {old_NF=NF; prev=$0} END {print $0}\’
直接input到terminal时,该命令正常工作,但在以下函数中运行时,会出现以下错误:
find: paths must precede Expression: | Usage: find [-H] [-L] [-P] [-olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [Expression] Process exitValue: 1
Java函数:
try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(\”find /home/Alison/workspace/FunctionalTestFramework/src/com/q1labs/qa/selenium/screens -type d | awk -F/ \’NF <= old_NF {print prev} {old_NF=NF; prev=$0} END {print $0}\’\”); inputStream stderr = proc.getErrorStream(); inputStreamReader isr = new inputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null; while ( (line = br.readline()) != null) System.out.println(line); int exitVal = proc.waitFor(); System.out.println(\”Process exitValue: \” + exitVal); } catch (Throwable t) { t.printstacktrace(); }
Cygwin自动脚本启动
命令提示符在wshShell.Run上打开多个窗口
Unix命令“uniq”&“sort”
启动netsh wlan start hostednetwork需要pipe理员权限才能运行
在当前目录和所有子目录中列出特定大小的文件
我怎样才能解决VBoxManage.exe:错误:格式自动检测失败:VERR_file_NOT_FOUND
如何强制RAM编程?
蚊子(在窗户)命令未find
cmd / c和文件path中的&符号
linux的头部/尾部有偏移量
正如我所说的,你可以exec一个shell,例如/bin/sh ,后跟-c然后解释该字符串。 这是标准C中的系统(3)在Unix和Posix系统上的功能。
不过,我只是建议编写一个shell脚本来完成你的复杂命令,并且执行这个shell脚本。 这样就可以在不改变Java代码的情况下(测试和改进)shell脚本。
尝试更换:
rt.exec(\”find /home/Alison/workspace/FunctionalTestFramework/src/com/q1labs/qa/selenium/screens -type d | awk -F/ \’NF <= old_NF {print prev} {old_NF=NF; prev=$0} END {print $0}\’\”);
这样:
rt.exec(new String[]{\”find\”,\”/home/Alison/workspace/FunctionalTestFramework/src/com/q1labs/qa/selenium/screens\”,\”-type\”,\”d\”});
请注意,您将无法运行任何使用管道的命令| 因为像管道这样的重定向 *** 作符是一个shell特性,但是传递给exec()的命令不会在命令行中运行。
总结
以上是内存溢出为你收集整理的从Java运行Linux命令 – runtime.exe全部内容,希望文章能够帮你解决从Java运行Linux命令 – runtime.exe所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容