Respostas:
Embora a expansão da braçadeira se {1,2}
origine no csh
final dos anos 70 e tenha chegado às conchas do tipo Bourne no bash
/ zsh
/ pdksh
no final dos anos 80, início dos anos 90, a {n1..n2}
variante surgiu mais tarde zsh
em 1995 (2,6-beta4).
bash
copiou-o em 2004 (3.0) e ksh93
em 2005 ( ksh93r
).
Provavelmente o shell em que você está tentando isso não é um desses ou é uma versão mais antiga do bash
e ksh93
.
#!/bin/sh
...
/bin/sh
é bash
ou ksh93
.
/bin/sh
funcionam como históricos sh
(é o que a página de manual do bash diz mesmo assim). Não verifiquei ksh
a página de manual, mas tenho certeza de que ela se comportará de acordo.
zsh
) primeiro. Outra solução alternativa seria usar algo como "mkdir $ (seq 1 10)".
{x..y}
A expansão do intervalo de chaves é implementada no bash 3.0-alpha. Para nos ajudar e a si mesmo, por favor, mostre sua echo "$BASH_VERSION"
saída.
Então a resposta: Se mkdir {1..10}
cria um dir com o nome {1..10}
, você está usando uma versão do bash anterior bash 3.0-alpha
. Nesse caso, você pode usar uma construção de loop for como:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Verifique sua versão do 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>
Verifique também mkdir
se não há aliases de alguma maneira estranha:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}
funciona para mim, cria dez dirs.