将通配符传递给process builder C++中的p>由“类似:”封装 system("cmd arg1 arg2");// C++ Runtime.getRuntime().exec("cmd arg1 arg2");// Java new ProcessBuilder("cmd","arg1","arg2").start();// Java //=============== output cmd 'arg1' 'arg2'
这可以防止参数被解释为通配符,比如:l*将被解释为“lstar”而不是“l{一切皆有可能}” 此外,如果我添加一个',它将转换为' 如何通过这些编程语言传递通配符?是shell(bash、csh)等处理通配符并将特定参数传递给进程。例如,您可以运行将通配符传递给process builder C++中的p>由“类似:”封装 system("cmd arg1 arg2");// C++ Runtime.getRuntime().exec("cmd arg1 arg2");// Java new ProcessBuilder("cmd","arg1","arg2").start();// Java //=============== output cmd 'arg1' 'arg2',java,c++,shell,Java,C++,Shell,这可以防止参数被解释为通配符,比如:l*将被解释为“lstar”而不是“l{一切皆有可能}” 此外,如果我添加一个',它将转换为' 如何通过这些编程语言传递通配符?是shell(bash、csh)等处理通配符并将特定参数传递给进程。例如,您可以运行ls*.txt-shell展开*.txt并调用ls a.txt b.txt c.txt(取决于当前目录中存在的文件) 调用exec不会调用任何shell,因此没有“通配符处理” 进程可以自己处理通配符(if(arg.equals(“*”){…),但我认
ls*.txt
-shell展开*.txt
并调用ls a.txt b.txt c.txt
(取决于当前目录中存在的文件)
调用exec
不会调用任何shell,因此没有“通配符处理”
进程可以自己处理通配符(if(arg.equals(“*”){…
),但我认为这是非常罕见的
因此,要么调用进程必须进行匹配并将正确的参数传递给exec,要么您需要使用shell调用exec,比如
Runtime.getRuntime().exec(“bash-c ls*.txt”);
处理通配符的是shell—如果您不调用shell,就没有人来处理通配符。谢谢,伙计,我必须运行它“Runtime.getRuntime().exec(“bash-c cmd arg1 arg2”);您可以回答它,我会接受它。”