Ответы:
В то время как в фигурных скобках , как {1,2}
берет свое начало в csh
в конце 70 - х годов, и нашел свой путь к Bourne-подобных оболочек в bash
/ zsh
/ pdksh
в конце 80 - х, начале 90-х годов {n1..n2}
вариант пришел позже первым в zsh
в 1995 году (2,6-Beta4).
bash
скопировал его в 2004 году (3.0) и ksh93
в 2005 году ( ksh93r
).
Вероятно, оболочка, в которой вы пытаетесь это сделать, не относится ни к одной из этих версий или к более старой версии bash
и ksh93
.
#!/bin/sh
...
/bin/sh
есть bash
или ksh93
.
/bin/sh
действующая как историческая sh
(это то, что в любом случае говорится на странице руководства bash). Не проверял ksh
справочную страницу, но я уверен, что она будет вести себя соответственно.
zsh
). Другой обходной путь - использовать что-то вроде «mkdir $ (seq 1 10)».
{x..y}
Расширение диапазона скобок реализовано в bash 3.0-alpha. Чтобы помочь нам и себе, пожалуйста, покажите свои echo "$BASH_VERSION"
результаты.
Тогда ответ: Если mkdir {1..10}
создает каталог с именем, {1..10}
то вы используете ранее версию Bash bash 3.0-alpha
. В этом случае вы можете использовать для конструкции цикла как:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Проверьте версию Bash:
$ 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>
Также проверьте, что mkdir
это не было псевдонимами каким-то странным образом:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}
работает для меня, создает десять режиссеров.