¿Tengo que hacer alguna configuración para comenzar la expansión de llaves? Cuando ejecuto mkdir {1..10}
, solo crea un nombre de directorio {1..10}
.
echo ${SHELL}
para hacer que esta pregunta pueda obtener una respuesta útil.
¿Tengo que hacer alguna configuración para comenzar la expansión de llaves? Cuando ejecuto mkdir {1..10}
, solo crea un nombre de directorio {1..10}
.
echo ${SHELL}
para hacer que esta pregunta pueda obtener una respuesta útil.
Respuestas:
Si bien la expansión de los aparatos ortopédicos se {1,2}
origina a csh
fines de los años 70, y se abrió camino hacia las conchas tipo Bourne en bash
/ zsh
/ pdksh
a fines de los 80, principios de los 90, la {n1..n2}
variante llegó primero zsh
en 1995 (2.6-beta4).
bash
lo copié en 2004 (3.0) y ksh93
en 2005 ( ksh93r
).
Probablemente el shell en el que intentas esto no es ninguno de esos o es una versión anterior de bash
y ksh93
.
#!/bin/sh
...
/bin/sh
es bash
o ksh93
.
/bin/sh
actúan como históricos sh
(es lo que dice la página de manual de bash de todos modos). No he revisado ksh
la página del manual, pero estoy seguro de que se comportará en consecuencia.
zsh
) primero. Otra solución alternativa sería usar algo como "mkdir $ (seq 1 10)".
{x..y}
La expansión de llaves de rango se implementa en bash 3.0-alpha. Para ayudarnos a usted y a usted mismo, muestre su echo "$BASH_VERSION"
resultado.
Luego la respuesta: si mkdir {1..10}
crea un directorio con el nombre, {1..10}
entonces está utilizando una versión bash anterior bash 3.0-alpha
. En ese caso, puede usar una construcción de bucle for como:
for ((i=1;i<=10; i++)); do mkdir "$i"; done
Verifique su versión de 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>
También verifique que mkdir
no haya habido alias de alguna manera extraña:
$ alias |grep mkdir
alias md='mkdir'
mkdir {1..10}
funciona para mí, crea diez directorios.