2012-07-15 23 views
10

Hola, quiero escribir y vaciar el bucle del cuerpo. Solo quiero que el contador de bucle incremente, así que quiero que la CPU permanezca ocupada sin ninguna operación IO. Esto es lo que he escrito, pero me da un error:Cuerpo vacío para Loop Linux Shell

#!/bin/bash 
for (( i = 0 ; i <= 1000000; i++ )) 
do 
done 


[email protected]:~# ./forLoop 
./forLoop: line 4: syntax error near unexpected token `done' 
./forLoop: line 4: `done' 

Respuesta

23

Debe especificar al menos un comando en un cuerpo de bucle.

El mejor comand para tales propósitos ia a colon :, comúnmente usado como no-op shell command.

+0

"Se puede considerar como un sinónimo de shell builtin true". - Esto hace que esta respuesta sea la misma que la anterior. ;) –

3

Se puede poner un comando no op dentro del bucle como true o false (no hacer nada con o sin éxito, respectivamente).

Esto será un ciclo cerrado y quemará la CPU. A menos que desee calentar su computadora en una mañana fría, simplemente puede decir i=1000000 y tener el mismo efecto que el ciclo.

¿Qué es lo que estás tratando de lograr?

+0

Un NOP no "quemará CPU", podría mostrar un uso del 100% pero producirá una producción de calor insignificante. Necesitas hacer un trabajo para calentar tu procesador. – Thomas

+0

Punto interesante. ¿No funcionaría el incremento del contador de bucles? –

+0

Probablemente no sea suficiente, el procesador pasará la mayor parte del tiempo en las instrucciones CMP/JNE en lugar del incremento del contador de bucles. Pero unas pocas instrucciones aritméticas en el ciclo deberían hacerlo (como algunas multiplicaciones/divisiones). – Thomas

1
#!/bin/bash 
let i=0 
while [[ $i -le 1000000 ]]; do 
    let i++ 
done 
0

Puede usar sleep x si desea retrasar durante x cantidad de segundos.

+0

Esto no hará que este bucle sea un bucle ocupado-espera. –