Por que a expansão de chaves não é suportada?

8

Eu tenho que fazer alguma configuração para iniciar a expansão de chaves? Quando executo o mkdir {1..10} , ele cria apenas uma nomeação do diretório {1..10} .

    
por user43312 29.09.2013 / 09:31

3 respostas

10

Enquanto a expansão de cinta como {1,2} se origina em csh no final dos anos 70 e encontra seu caminho para shells semelhantes a Bourne em bash / zsh / pdksh no final dos anos 80, início dos anos 90, O {n1..n2} variant veio mais tarde primeiro em zsh em 1995 (2.6-beta4).

bash copiou em 2004 (3.0) e ksh93 em 2005 ( ksh93r ).

Provavelmente, o shell em que você está tentando fazer isso não é uma versão anterior de bash e ksh93 .

    
por 29.09.2013 / 10:20
4
A expansão da chave

{x..y} Range é implementada no bash 3.0-alpha. Para nos ajudar e a si mesmo, mostre sua saída echo "$BASH_VERSION" .

Em seguida, a resposta: Se mkdir {1..10} criar um diretório com o nome {1..10} , você está usando uma versão 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

Espero que ajude.

    
por 29.09.2013 / 14:49
1

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 se mkdir não tem apelidos de maneira estranha:

$ alias |grep mkdir
alias md='mkdir'
    
por 29.09.2013 / 14:55