Відповіді:
Незважаючи на те, що розширення брекетів, як видається, {1,2}
починається в csh
кінці 70-х років, і знайде свій шлях до снарядів Борна в bash
/ zsh
/ pdksh
в кінці 80-х, початку 90-х, {n1..n2}
варіант з'явився пізніше zsh
в 1995 році (2,6-бета4).
bash
скопіював його у 2004 році (3.0) та ksh93
у 2005 році ( ksh93r
).
Можливо, оболонка, з якою ви намагаєтеся це, не є жодною з цих версій або є старішою версією bash
та ksh93
.
#!/bin/sh
...
/bin/sh
є bash
або ksh93
.
/bin/sh
виступають як історичні sh
(це все одно, що говорить сторінка "bash man"). Не перевірено ksh
чоловічої сторінки, але я впевнений, що вона буде вести себе відповідно.
zsh
). Іншим способом вирішення проблеми буде використання чогось типу "mkdir $ (seq 1 10)".
{x..y}
Розширення діапазону дужок реалізовано в bash 3.0-alpha. Щоб допомогти нам і собі, покажіть свої echo "$BASH_VERSION"
результати.
Тоді відповідь: Якщо mkdir {1..10}
створюється dir з назвою, {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}
працює для мене, він створює десять дiрів.