Antworten:
Während Klammer Expansion wie {1,2}
entsteht in csh
in den späten 70er Jahren, und seine Art und Weise zu Bourne-wie Muscheln gefunden bash
/ zsh
/ pdksh
Ende der 80er Jahre, Anfang der 90er Jahre, die {n1..n2}
kam Variante später erstmals zsh
im Jahr 1995 (2,6-Beta 4).
bash
kopierte es 2004 (3.0) und ksh93
2005 ( ksh93r
).
Wahrscheinlich ist die Shell, in der Sie dies versuchen, keine von diesen oder eine ältere Version von bash
und ksh93
.
#!/bin/sh
...
/bin/sh
ist bash
oder ksh93
.
/bin/sh
fungieren die aufgerufenen Shells als historische sh
(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 Ihre echo "$BASH_VERSION"
Ausgabe.
Dann die Antwort: Wenn mkdir {1..10}
ein Verzeichnis mit dem Namen erstellt {1..10}
wird, verwenden Sie zuvor eine Bash-Version bash 3.0-alpha
. In diesem Fall können Sie eine for-Schleifenkonstruktion verwenden als:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Überprüfen Sie Ihre Bash-Version:
$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Überprüfen Sie auch, ob es mkdir
sich nicht um Aliase handelt:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}
funktioniert bei mir, es entstehen zehn dirs.