使用Java的runtime.exec对Shell(bash)大括号进行扩展

我正在尝试获取一个扩展命令以与runtime.exec一起使用,但是括号被解释为文字,而不是被扩展.这是我想做的事情:

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

不幸的是,这给了我当前目录中名为“ Foldername {1,2,3}”的单个文件夹,而不是“ Foldername1”,“ Foldername2”和“ Foldername3”.有人知道防止括号被解释为文字的方法吗?

最佳答案
您正在尝试使用Bash通配符.它们在Bash shell中解释.您直接在运行mkdir,因此没有解释{}的外壳程序.您需要指定外壳的路径

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

Source.

转载注明原文:使用Java的runtime.exec对Shell(bash)大括号进行扩展 - 代码日志