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

我正在尝试使用扩展命令来使用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,因此没有shell来解释{} 。 您需要指定shell的路径

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

来源 。