La Sentencia continue - AWK

La sentencia continue, al igual que break, se usa solamente dentro de un bucle for, while o do-while. Lo que hace es saltarse todas las sentencias que falten por ejecutarse dentro del cuerpo del bucle y volver a chequear automáticamente la condición del bucle. Contrasta con la sentencia break, en que ésta produce directamente un salto fuera del bucle. Aquí se presenta un ejemplo:

# print names that don't contain the string "ignore"
# first, save the text of each line
{ names[NR] = $0 }
# print what we're interested in END {
for (x in names) {
if (names[x] ~ /ignore/) continue
print names[x]
}
}

Si uno de los registros de entrada contiene la cadena ‘ignore’, este ejemplo se salta la sentencia print para ese registro, y vuelve a la primera sentencia del bucle.

Este no es un ejemplo práctico de continue, ya que está sería una forma más sencilla de escribir el bucle:

for (x in names)
if (names[x] !~ /ignore/) print names[x]

La sentencia continue en un bucle for hace que awk se salte el resto del cuerpo del bucle, y resume la ejecución con la expresión incremento de la sentencia for. El siguiente programa ilustra esto de hecho:

awk 'BEGIN {
for (x = 0; x <= 20; x++) { if (x == 5)
continue printf ("%d ", x)
}
print ""
}'

Este programa imprime todos los números de 0 a 20, excepto el 5 para el cual se salta el print. Ya que el incremento no es saltado, x no permanece estancado en 5. Contrasta el bucle for de arriba con el bucle while:

awk 'BEGIN {
x = 0
while (x <= 20) { if (x == 5)
continue
printf ("%d ", x) x++
}
print ""
}'

Este programa se convierte en un bucle infinito una vez que x alcanza el valor de 5.







































Publicar un comentario

0 Comentarios