Muss ich eine Konfiguration vornehmen, um die Klammererweiterung zu starten? Wenn ich laufe mkdir {1..10}
, wird nur eine Verzeichnisbenennung erstellt {1..10}
.
shell
brace-expansion
user43312
quelle
quelle
mkdir {1..10}
funktioniert bei mir, es entstehen zehn dirs.echo ${SHELL}
, damit diese Frage eine nützliche Antwort erhält.Antworten:
Während Klammer Expansion wie
{1,2}
entsteht incsh
in den späten 70er Jahren, und seine Art und Weise zu Bourne-wie Muscheln gefundenbash
/zsh
/pdksh
Ende der 80er Jahre, Anfang der 90er Jahre, die{n1..n2}
kam Variante später erstmalszsh
im Jahr 1995 (2,6-Beta 4).bash
kopierte es 2004 (3.0) undksh93
2005 (ksh93r
).Wahrscheinlich ist die Shell, in der Sie dies versuchen, keine von diesen oder eine ältere Version von
bash
undksh93
.quelle
#!/bin/sh
.../bin/sh
istbash
oderksh93
./bin/sh
fungieren die aufgerufenen Shells als historischesh
(das steht sowieso auf der Manpage von Bash).ksh
Ich habe die Manpage nicht überprüft , aber ich bin sicher, dass sie sich entsprechend verhält.zsh
) zu starten . Eine andere Problemumgehung wäre, etwas wie "mkdir $ (seq 1 10)" zu verwenden.{x..y}
Die Erweiterung der Range Brace ist in Bash 3.0-Alpha implementiert. Um uns und Ihnen zu helfen, zeigen Sie bitte Ihreecho "$BASH_VERSION"
Ausgabe.Dann die Antwort: Wenn
mkdir {1..10}
ein Verzeichnis mit dem Namen erstellt{1..10}
wird, verwenden Sie zuvor eine Bash-Versionbash 3.0-alpha
. In diesem Fall können Sie eine for-Schleifenkonstruktion verwenden als:for ((i=1;i<=10; i++)); do mkdir "$i"; done
quelle
Überprüfen Sie Ihre Bash-Version:
Überprüfen Sie auch, ob es
mkdir
sich nicht um Aliase handelt:quelle