declaraciones Linux de control de flujo awk shell (si, por, mientras que, do) Detalles

  

Permitir Linux awk un tiempo, do-while y para los estados utilizan rotura, continúan declaración para controlar la dirección del flujo, sino que también permite el uso de la salida de modo La declaración para renunciar. Break rompe el bucle que se está ejecutando actualmente y salta fuera del loop para ejecutar la siguiente instrucción. Si es el proceso de selección de uso. En awk, declaraciones de control de flujo, estructuras gramaticales y tipos de lenguaje c. El siguiente es el uso de cada declaración.


. una sentencia condicional (si)

si (expresión) #if (variable en Array) Declaración comunicado 1else 2

formato "Declaración 1" puede ser varias declaraciones. Si se siente cómodo leyendo Unix awk para su conveniencia, es mejor que incluya varias declaraciones con {}. Unix estructura ramificada AWK permite la anidación en el formato:

si (expresión)

{1} comunicado

else if (expresión) sentencia {2} else {comunicado 3}

[chengmo @ localhost nginx] # awk 'BEGIN {test = 100; si (prueba de > 90) {print " muy bueno ";} else if (prueba de > 60) {print " "; buena} else {print " " no pase;;}} '

muy buena


declaración puede ser usada detrás de cada comando y "; y " Fin del número.


Dos. Declaración de bucle (while, for, do)

1.while statement

Formato:

while (Expresión fórmula)

{sentencia}

ejemplos:

[chengmo @ localhost nginx] # awk 'BEGIN {test = 100; Total = 0; while (i < = prueba ) {total + = i; i ++;} total de impresión;} '
5050

2. para el ciclo

de bucle tiene dos formatos:

formato 1:

for (variable en una matriz)

{declaración}

ejemplos:

[chengmo @ localhost nginx] # awk 'BEGIN {for (k en ENVIRON) { impresión k " = " ENVIRON [k];}} '

AWKPATH = :. /usr /share /awkOLDPWD = /home /web97SSH_ASKPASS = /usr /libexec /openssh /gnome-ssh-askpassSELINUX_LEVEL_REQUESTED = SELINUX_ROLE_REQUESTED = LANG = zh_CN.GB2312

. . . . . .

Nota: ENVIRON es una constante awk y es una matriz sub-típica.

Formato 2:

para (variable; condición; expresión)

{declaración}

ejemplo:

[chengmo @ localhost nginx] # awk 'BEGIN {Total = 0; for (i = 0; i < = 100; i ++) {total + = i;} total de la impresión;}'

5050

3 .do ciclo

formato:

do

{sentencia} while (condición)

ejemplos:

[chengmo @ localhost nginx ] # awk 'BEGIN {Total = 0; i = 0; do {total + = i; i ++;} while (i < = 100) total de la impresión;}' 5050


El anterior es La instrucción de control de flujo de awk, como se puede ver en la gramática, es la misma que el lenguaje c. Con estas declaraciones, muchos programas shell pueden ser entregados a awk, y el rendimiento es muy rápido.


break Cuando se usa una instrucción break en un momento o en una instrucción for, el ciclo del programa se cierra. Continuar Hace que el ciclo del programa se mueva a la siguiente iteración cuando la instrucción Continuar se usa por un tiempo o una instrucción for. Siguiente puede hacer que la siguiente línea de entrada se lea y se devuelva a la parte superior de la secuencia de comandos. Esto evita realizar otras operaciones en la línea de entrada actual. La declaración de salida hace que la entrada principal se desconecte y transfiera el control a END si END está presente. Si la regla END no está definida, o la instrucción de salida se aplica en END, se termina la ejecución del script.

En tercer lugar, la comparación de rendimiento

[chengmo @ localhost nginx] # tiempo (awk 'BEGIN {Total = 0; for (i = 0; i < = 10 000; i ++) {total + = i;} totales de impresión;} ') 50005000

0m0.000s verdadera 0m0.003suser 0m0.003ssys [chengmo @ localhost nginx] # tiempo (total = 0; para i en $ (SEC 10000); hago Total = $ (($ + total i)); hecho, echo $ totales;) 50005000

verdadera 0m0.141suser 0m0.125ssys 0m0.008s


realizar la misma función, ¡Puedes ver que el rendimiento de awk es 50 veces mayor que el de la shell!

Copyright © Conocimiento de Windows All Rights Reserved