Tengo problemas para encontrar la combinación correcta de punto y coma y / o llaves. Me gustaría hacer esto, pero como una línea desde la línea de comandos:
while [ 1 ]
do
foo
sleep 2
done
bash
loops
while-loop
Brian Deacon
fuente
fuente

Respuestas:
Por cierto, si lo escribe como una línea múltiple (como se muestra) en el símbolo del sistema y luego llama al historial con la flecha hacia arriba, lo obtendrá en una sola línea, puntuada correctamente.
fuente
cmdhistopción si está usando bash?while true; do sh /Users/myuser/bin/vpn ; doneTambién es posible usar el comando dormir en la condición de while. Hacer que una línea se vea más limpia en mi humilde opinión.
fuente
while echo thinking ; do sleep 2 ; donePor supuesto, si el comando [while] falla, el ciclo se cierra, por lo que tendría que hacerlo,while echo thinking || true ; do sleep 2 ; donepero luego volverá awhile true ; ...Colón siempre es "verdadero":
fuente
: [arguments]Sin efecto; el comando no hace nada más que expandir argumentos y realizar cualquier redirección especificada. Se devuelve un código de salida cero.Puede usar punto y coma para separar las declaraciones:
fuente
También puede hacer uso del
untilcomando:Tenga en cuenta que, en contraste con
while,untilejecutaría los comandos dentro del bucle siempre que la condición de prueba tenga un estado de salida que no sea cero.Usando un
whilebucle:Usando un
forbucle:Otra forma de usar
until:fuente
until ((0)); do foo; sleep 2; doneno parece funcionar. Es continuo infinito.Un bucle infinito muy simple .. :)
Fr su pregunta sería:
fuente
Me gusta usar los puntos y comas solo para la instrucción WHILE, y el operador && para hacer que el ciclo haga más de una cosa ...
Así que siempre lo hago así
fuente
&&in the loop es el mismo que en cualquier otro momento, ¿verdad? ¿Necesita la segunda cosa que suceda sólo si el primer pase, a continuación, utilizar&&lo demás;es suficiente. Realmente, desea mantener el contenido de ese ciclo corto y simple, idealmente solo un comando, una función o un script.Para ver el proceso simple, use
watchen su lugarfuente
Utilizando
while:Usando
forLoop:Usar
Recursion, (un poco diferente al anterior, la interrupción del teclado no lo detendrá)fuente
Si desea que el ciclo while se detenga después de alguna condición, y su
foocomando devuelve un valor distinto de cero cuando se cumple esta condición, puede hacer que el ciclo se rompa así:Por ejemplo, si el
foocomando está eliminando cosas en lotes, y devuelve 1 cuando no queda nada para eliminar.Esto funciona bien si tiene un script personalizado que necesita ejecutar un comando muchas veces hasta que se presente alguna condición. Usted escribe el script para salir
1cuando se cumple la condición y salir0cuando se debe ejecutar nuevamente.Por ejemplo, supongamos que tiene un script de Python
batch_update.pyque actualiza 100 filas en una base de datos y devuelve0si hay más para actualizar y1si no hay más. El siguiente comando le permitirá actualizar las filas 100 a la vez con dormir durante 5 segundos entre actualizaciones:fuente
foocomando salga con código1cuando desea que se rompa el bucle while. He actualizado mi respuesta con un ejemplo.Si puedo dar dos ejemplos prácticos (con un poco de "emoción").
Esto escribe el nombre de todos los archivos terminados con ".jpg" en la carpeta "img":
Esto los elimina:
Solo trato de contribuir.
fuente
ls -1 *.jpgyrm *.jpgTambién puede probar esto ADVERTENCIA: esto no debe hacerlo, pero dado que la pregunta es un bucle infinito sin fin ... así es como podría hacerlo.
fuente