2

展開コマンドを runtime.exec で動作させようとしていますが、中かっこは展開されずにリテラルとして解釈されています。これが私がやろうとしていることです:

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

残念ながら、現在のディレクトリに「Foldername1」、「Foldername2」、および「Foldername3」ではなく、「Foldername{1,2,3}」という名前の単一のフォルダーが作成されます。中括弧がリテラルとして解釈されないようにする方法を知っている人はいますか?

4

1 に答える 1

3

Bash ワイルドカードを使用しようとしています。それらは Bash シェル内で解釈されます。mkdir を直接実行しているため、解釈するシェルはありません{}。シェルへのパスを指定する必要があります

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

ソース

于 2013-05-10T16:35:18.167 に答える