Antworten:
Während Klammer Expansion wie {1,2}entsteht in cshin den späten 70er Jahren, und seine Art und Weise zu Bourne-wie Muscheln gefunden bash/ zsh/ pdkshEnde der 80er Jahre, Anfang der 90er Jahre, die {n1..n2}kam Variante später erstmals zshim Jahr 1995 (2,6-Beta 4).
bashkopierte es 2004 (3.0) und ksh932005 ( ksh93r).
Wahrscheinlich ist die Shell, in der Sie dies versuchen, keine von diesen oder eine ältere Version von bashund ksh93.
#!/bin/sh...
/bin/shist bashoder ksh93.
/bin/sh fungieren die aufgerufenen Shells als historische sh(das steht sowieso auf der Manpage von Bash). kshIch 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 mkdirsich nicht um Aliase handelt:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}funktioniert bei mir, es entstehen zehn dirs.