Dois-je effectuer une configuration pour démarrer l'expansion de l'accolade? Lorsque je cours mkdir {1..10}
, il crée simplement un nom de répertoire {1..10}
.
shell
brace-expansion
user43312
la source
la source
mkdir {1..10}
fonctionne pour moi, il crée dix dir.echo ${SHELL}
pour rendre cette question capable d'obtenir une réponse utile.Réponses:
Alors que l'expansion de l'orthèse comme à son
{1,2}
origine àcsh
la fin des années 70, et a trouvé son chemin vers des coquilles de type Bourne dansbash
/zsh
/pdksh
à la fin des années 80, au début des années 90, la{n1..n2}
variante est venue plus tardzsh
en 1995 (2.6-beta4).bash
copié en 2004 (3.0) etksh93
en 2005 (ksh93r
).Probablement le shell dans lequel vous essayez ceci n'est ni l'un ni l'autre ou une ancienne version de
bash
etksh93
.la source
#!/bin/sh
.../bin/sh
estbash
ouksh93
./bin/sh
agissent comme l'historiquesh
(c'est ce que la page de manuel bash dit de toute façon). Je n'ai pas vérifiéksh
la page de manuel de, mais je suis sûr qu'elle se comportera en conséquence.zsh
) en premier. Une autre solution serait d'utiliser quelque chose comme "mkdir $ (seq 1 10)".{x..y}
L'expansion de l'accolade de plage est implémentée dans bash 3.0-alpha. Pour nous aider et pour vous-même, veuillez montrer votreecho "$BASH_VERSION"
résultat.Ensuite, la réponse: si
mkdir {1..10}
crée un répertoire avec le nom,{1..10}
vous utilisez une version bash antérieurebash 3.0-alpha
. Dans ce cas, vous pouvez utiliser une construction de boucle for comme:for ((i=1;i<=10; i++)); do mkdir "$i"; done
la source
Vérifiez votre version Bash:
Vérifiez également qu'il
mkdir
n'y a pas eu d'alias d'une manière étrange:la source