如果Linux命令包含特殊符号,则无法使用java
我正在尝试运行下面的代码,但它不起作用,有人能帮我理解为什么它会这样,或者我遗漏了什么吗如果Linux命令包含特殊符号,则无法使用java,java,linux,bash,process,execution,Java,Linux,Bash,Process,Execution,我正在尝试运行下面的代码,但它不起作用,有人能帮我理解为什么它会这样,或者我遗漏了什么吗 import java.io.IOException; public class SimpleClass { public static void main(String args[]){ try { Process process = Runtime.getRuntime().exec("bash mkdir demoDir");
import java.io.IOException;
public class SimpleClass {
public static void main(String args[]){
try {
Process process = Runtime.getRuntime().exec("bash mkdir demoDir");
// Process process2 = Runtime.getRuntime().exec("echo sometext >> someFile.txt");
}
catch (IOException e) {
e.printStackTrace();
}
}
}
如果我执行第一个进程,它工作正常,但如果我执行进程2,它就不工作。someFile.txt存在,并且存在工作目录,除了此命令之外,如果我尝试创建类似mkdir/home/dummy/demodmir的目录,那么它也不工作,但我的程序成功执行。>由shell解释和处理,例如bash、zsh等。但是,您没有在此命令中运行shell。Runtime.exec基本上执行命令/bin/echo,并将参数someText、>>、someFile.txt传递给它
我不知道你为什么想做你正在做的事情,但是试试这个:
Runtime.getRuntime.execbash-c\echo sometext>>someFile.txt\ 如果没有shell->将bash添加到th的开头,则无法执行echo命令这个问题的答案已经讨论过了。使用
相反。对我有效。你认为bash在第一种方法中有什么作用?嗨,Matthew,thanx,答案是肯定的,但我以前尝试过,但它不起作用,我再次尝试了你的答案,但仍然不起作用。thanx Brosch,它起作用了:链接也很有用,我之前搜索过,但谷歌和stackoverflow都没有给我这个答案:
String[] cmd = {"bash", "-c", "echo sometext >> someFile.txt" };
Process process2 = Runtime.getRuntime().exec(cmd);