壳牌(bash)的括号扩展使用Java的Runtime.exec(Shell (bash&#

2019-09-02 12:40发布

我试图得到一个扩展命令的Runtime.exec工作,但括号被解释为文字,而不是正在扩大。 这里就是我想要做的事:

String command = "mkdir -p Foldername{1,2,3}/InnerFolder";
Runtime.getRuntime().exec( new String[] { "sh", "-c", command } );

不幸的是,这给了我在我的当前目录的单个文件夹命名为“文件夹名称{1,2,3}”的“Foldername1”,“Foldername2”和“Foldername3”代替。 有谁知道的一种方式,以防止支架被解释为文字?

Answer 1:

您正在尝试使用通配符猛砸。 他们Bash shell中进行解释。 你直接运行的mkdir,所以没有外壳解释{} 你需要指定shell路径

String command = "mkdir -p Foldername{1,2,3}/InnerFolder";
Runtime.getRuntime().exec( new String[] { "/bin/bash", "-c", command } );

源 。



文章来源: Shell (bash) brace expansion with Java's runtime.exec