Estoy aprendiendo scripts de shell de un libro de texto desactualizado, y me parece que sería realmente útil tener un programa que solo devuelva una cadena de números delimitados por espacios como
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
Entonces, si está haciendo un script de shell, puede tener
for i in `range 10 20`; do some stuff with numbers in that range;done
¿Existe tal cosa o necesito escribirla yo mismo?
range
conseq
en su ejemplo. el separador predeterminado es nueva línea, para tener espacios:seq -s " " 10 20
for
ciclo, o incluso cualquier comando general que divide los argumentos, a menos que haya configurado el IFS de manera diferente.seq
ya que POSIX no lo especifica.Respuestas:
seq
es parte de coreutils.Salida:
Si proporciona solo 2 argumentos para
seq
, el incremento es 1:fuente
sed
también tiene buenas opciones como-s
establecer el separador o-w
calificar el ancho. Y puede proporcionar un incremento:seq -w -s ", " 0 5 20
resultados en 00, 05, 10, 15, 20 .seq
?seq 10 20
también podría ser un ejemplo simple que vale la pena agregar;)¿Bastaría Bash?
Puedes hacer muchas cosas con la expansión de llaves . Bash 4 también admite rangos acolchados, por ejemplo
{01..20}
.Tenga en cuenta que Bash no se considera portátil y no es una utilidad estándar de Unix. Aunque puede asumir con seguridad que está instalado en la mayoría de los Linux modernos, no use esto en un script que planee ejecutar en todo tipo de máquinas similares a Unix.
fuente
seq
. El uso es como en el ejemplo:seq -s " " 10 20
. El-s
parámetro es necesario porque, por defecto, los valores están separados por\n
.seq
es una utilidad GNU, y por lo tanto no es un "programa estándar de Unix"for i in {001..010}; ... ; done
y pondrá a cero el número a 3 dígitos.Si desea algo estrictamente portátil (es decir, que no se base en extensiones o comandos específicos de bash no especificados por POSIX)
fuente
/dev/null
o< /dev/null
a eso?If the awk program contains no actions and no patterns, but is otherwise a valid awk program, standard input and any file operands shall not be read and awk shall exit with a return status of zero.
Antes de 10.7 no había
seq
en Mac OS X, perojot
, debido a la herencia BSD.Ejemplo:
fuente
Usa un
for
buclefuente
Puede usar
seq
, o si no tiene eso, puede escribirlo usted mismo:Uso:
O:
fuente
En aras de la exhaustividad aquí, algo que funcionará con algunas variantes antiguas de Unix (siempre que tengan instalado Perl). No muy elegante.
fuente