如果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);