Also, mit bashder Alphabet-Erweiterung funktioniert das:
set {a..z}
for a do printf "./$a/$a%s\n" "$@"
done | xargs mkdir -p
Und wenn Sie das Alphabet nur einmal in der ersten Zeile eingeben, sollte das gleiche Konzept auf jede Shell übertragbar sein. Es gibt andere Möglichkeiten, um zur festgelegten Zeile zu gelangen, wenn Sie sie nicht wie folgt eingeben möchten:
seq -sP32P 97 123|dc
a b c d e f g h i j k l m n o p q r s t u v w x y z
... funktioniert beispielsweise in einem ASCII-Gebietsschema. Sie könnten also einen set $(seq -sP32P 97 123|dc)oder einen anderen Befehl ausführen, mit dem Sie eine $IFSgetrennte Liste der von Ihnen benötigten Argumente erhalten, aber ich meine, es ist wahrscheinlich besser, das bashDing nur zu verwenden oder es einzugeben.
Jedenfalls denke ich, dass ich es so machen würde, wenn nur, weil es nur mkdirso oft wie nötig aufruft .
Und um zu demonstrieren, wie es funktioniert, hier eine kleine Debug-Ausgabe eines kleineren Sets:
sh -cx 'for n do printf "./$n/$n%s\n" "$@"; done|cat' -- arg1 arg2 arg3
+ for n in '"$@"'
+ printf './arg1/arg1%s\n' arg1 arg2 arg3
+ cat
+ for n in '"$@"'
+ printf './arg2/arg2%s\n' arg1 arg2 arg3
+ for n in '"$@"'
+ printf './arg3/arg3%s\n' arg1 arg2 arg3
./arg1/arg1arg1
./arg1/arg1arg2
./arg1/arg1arg3
./arg2/arg2arg1
./arg2/arg2arg2
./arg2/arg2arg3
./arg3/arg3arg1
./arg3/arg3arg2
./arg3/arg3arg3
Wie Sie sehen können, werden die forSchleifen nur einmal pro Positionsparameter-Array-Index ausgeführt, den ich hier durch einfaches Übergeben shder Parameter beim Aufruf und darüber mit festgelegt habe set ${positionals}. Aber printferhält die gleiche Anordnung in der Argumentliste für jede Iteration und wendet seine Formatstring zu jedem seiner Argumente, so dass Sie den Anschein von Rekursion ohne unnötige Rekursion erhalten.
Wenn Sie den done|commandWillen dazu hinzufügen, die gesamte forAusgabe einer Schleife auf dieselbe Weise über die Pipe zu done >filestreamen, wird alles in eine Datei gestreamt - die Ausgabedatei wird nur einmal für das gesamte for...doneKonstrukt geöffnet und geschlossen .