Probablemente esto sea muy fácil, pero ¿hay una manera simple de escribir un comando una vez en la consola y ejecutarlo en n
ocasiones, donde n
se especifica en tiempo de ejecución? Algo como esto:
repeat 100 echo hello
¿Existe dicho comando (suponga una instalación típica de Linux)?
¿O escribiría para hacer algún tipo de bucle en bash?
command-line
unix
Jørn Schou-Rode
fuente
fuente
for i in {1..100}; do python3 foo.py ; done
y realmente quiero obtener el tiempo de ejecución (para ver qué tan rápido)time for i in {1..100}; do python3 foo.py ; done
y luego CTRL-C no podrá detener el cicloSí, te gustaría esto:
o, más corto:
fuente
Además de los métodos más integrados, puede usar una utilidad externa que genera una secuencia de números.
fuente
La sintaxis del bucle for es tonta. Esto es más corto:
fuente
No encontré una herramienta Linux "estándar" para hacer este trabajo, pero generalmente conservo mis archivos de puntos (.bashrc, .vimrc, etc.) de instalación a instalación, por lo que lo siguiente es bastante "estándar" si lo miras desde La perspectiva de preservar sus archivos de puntos en nuevas instalaciones:
Al final de su .bashrc o .bash_aliases, ponga la siguiente definición:
Guarde el archivo y vuelva a abrir el shell o ejecute
source /path/to/.bashrc
osource /path/to/.bash_aliases
, lo que elija modificar, en un shell existente.¡Eso es! Debería poder usarlo de la siguiente manera:
repeat 100 echo hello
repeat 84 ~/scripts/potato.sh
etc.
fuente
Actualmente, ninguna de las otras respuestas está utilizando herramientas estándar de Unix, que es lo que pide la pregunta del título.
Todos usan comandos no estándar (
seq
ojot
) o extensiones de shell (for
bucle de estilo C o expansión de llaves), es decir, todos no se adhieren al estándar POSIX.Aquí hay una forma portátil que debería funcionar con cualquier shell y sistema operativo compatible con POSIX:
fuente