Uso de la instrucción de bucle for, while, until en el tutorial de shell

declaración de bucle:

Hay principalmente tres métodos de bucle proporcionados en Bash Shell: for, while y until.

1.
For loop El método operativo de for loop es sacar el significado de los elementos seriales, ponerlos en las variables especificadas en orden y luego ejecutar repetidamente el área de comando adjunta (entre do y done) hasta que se agoten todos los elementos. .

Entre ellos, serial es una combinación de algunas cadenas, separadas entre sí por el separador definido por $ IFS (como un carácter de espacio), y estas cadenas se denominan campos.

La estructura gramatical de for es la siguiente:

for 变量 in 串行
do
   执行命令
done

Descripción:

Línea 1, coloque iterativamente los campos de la serie en variables

Líneas 2-4, y luego repita el área de comando entre do y done hasta que se haya procesado cada campo en la serie.


Inserte la descripción de la imagen aquí
Ejemplo de diagrama de flujo 1:

Use un bucle for para crear aaa1-aaa10 en el directorio de inicio y luego cree un directorio bbb1-bbb10 en aaa1-aaa10

#!/bin/bash
for a in {
    
    1..10}
do
        mkdir /datas/aaa$a
        cd /datas/aaa$a
        for b in {
    
    1..10}
        do
                mkdir bbb$b
        done
done
#!/bin/bash
for k in $( seq 1 10 )
do
   mkdir /home/kuangl/aaa${k}
   cd /home/kuangl/aaa${k}
   for l in $( seq 1 10 )
   do
   mkdir bbb${l}
   cd /home/kuangl/aaa${k}
   done
   cd ..
done

Descripción:

La línea 2, seq se usa para generar todos los enteros de un cierto número a otro.

Línea 4, cree una carpeta en el directorio de inicio.

Línea 6, usando un bucle for para crear una carpeta

Ejemplo 2

Enumere el espacio en disco ocupado por cada subdirectorio en el directorio var.

#!/bin/bash
DIR="/var"
cd $DIR
for k in $(ls $DIR)
do
  [ -d $k ] && du -sh $k
done

Descripción:

Línea 4, para cada archivo en el directorio / var, para procesamiento de bucle.

Línea 6, si el archivo bajo / var es un directorio, use du -sh para calcular la cantidad de espacio en disco ocupado por el directorio.

En segundo lugar, la
sintaxis del bucle while del bucle while:

1 while 条件测试
2 do
3   执行命令
4 done

Descripción:

Línea 1, la prueba de condición se realiza primero, si el valor de retorno es 0 (la prueba de condición es verdadera), luego ingrese al ciclo y ejecute el área de comando, de lo contrario

No ingrese al bucle, introduzca el comando while

Línea 3, ejecute el área de comandos. Entre estos comandos, debe haber comandos para cambiar la prueba de condición, de modo que exista la posibilidad de

Finalice el ciclo while después de un número finito de pasos (a menos que desee ejecutar un ciclo infinito).

Línea 4, vuelva a la línea 1, ejecute el comando while

Diagrama de flujo:
Inserte la descripción de la imagen aquí
Ejemplo 1

Mientras que el bucle, el uso clásico es leer el contenido del archivo con la entrada de dirección, de la siguiente manera:

 #!/bin/bash
while read a
do
        echo $a
done < /datas/6files
1 #!/bin/bash
2 while read kuangl
3 do
4   echo ${kuangl}
5 done < /home/kuangl/scripts/testfile

Descripción:

Línea 2, use read para tener una entrada estándar para leer los datos, póngalo en la variable kuangl, si los datos leídos no están vacíos, ingrese el ciclo.

Línea 4, muestra los datos de línea modificados

Línea 5, el contenido de / home / kuangl / scripts / testfile se transferirá a la entrada para ser leído por read.

Ejemplo 2

#!/bin/bash
declare -i i=1
declare -i sum=0
while ((i<=10))
do
  let sum+=i
  let i++
done
echo $sum
#!/bin/bash
declare -i i=1
declare -i sum=0
while ((i<=10))
do
  let sum+=i
  let ++i
done
echo $sum

Descripción:

Línea 2-3, declara que iy sum son números enteros

Línea 4, si la condición prueba: siempre que el valor de i sea menor o igual a 10, ejecute el ciclo.

Línea 6, suma + = i y suma = suma + i son iguales, suma acumula i.

En la línea 7, el valor de i se incrementa en 1. Esta línea es un comando para cambiar la prueba de condición Una vez que i es mayor que 10, el ciclo se puede terminar.

Línea 8, encuentro hecho, vuelva a la línea 6 para realizar la prueba condicional

La línea 9 muestra que el valor de la suma es 55

Ejemplo 3 tabla de multiplicar de while99

#!/bin/bash
a=1
b=1
while ((a <=9))
do
        while ((b<=a))
        do
                let "c=a*b"   #声明变量c
                echo -n  "$a*$b=$c "
                let b++
        done
        let a++
        let b=1  #因为每个乘法表都是1开始乘,所以b要重置
        echo "" #显示到屏幕换行
done

Descripción:

Línea 8, declare la variable c

Línea 9, formato de visualización de salida de eco, -n no envuelve la salida

Línea 13, sea b = 1 porque todas las tablas de multiplicar comienzan con 1, por lo que es necesario restablecer b

3. Bucle hasta
La prueba de condición del bucle while es medir el valor verdadero, y el bucle hasta es medir el valor falso.

La sintaxis del bucle hasta:

1 until 条件测试
2 do
3  执行命令
4 done

Explicación:
Línea 1, si el resultado de la prueba condicional es falso (el valor de retorno no es 0), ingrese el ciclo.

Línea 3, ejecuta el área de comando. Entre estos comandos, debe haber un comando para cambiar la prueba condicional, de modo que tenga la oportunidad de finalizar la ejecución del ciclo hasta después de un número limitado de pasos (a menos que desee ejecutar un ciclo infinito).

Línea 4, vuelva a la línea 1, ejecute el comando hasta.

Diagrama de flujo:
Inserte la descripción de la imagen aquí
Ejemplo 1

1 #!/bin/bash
2 declare -i i=10
3 declare -i sum=0
4 until ((i>10))
5 do
6   let sum+=i
7   let ++i
8 done
9 echo $sum

Explicación:
Línea 2-3, declare que iy sum son números enteros

Línea 4, si la prueba de condición: siempre que el valor de i no exceda 10, ingrese el ciclo.

Línea 6, suma + = i y suma = suma + i son iguales, suma acumula i.

En la línea 7, el valor de i se incrementa en 1. Esta línea es un comando para cambiar la prueba de condición Una vez que i es mayor que 10, el ciclo se puede terminar.

Línea 8, encuentro hecho, vuelva a la línea 6 para realizar la prueba condicional

La línea 9 muestra que el valor de la suma es 10

Ejemplo 2 hasta la tabla de multiplicar del 99

#!/bin/bash
a=1
b=1
until ((a>9)) #until 和while相反,条件假的执行,条件真就done结束
do
        until ((b>a))
        do
                let "c=a*b"
                echo -n "$a*$b=$c "
                let b++
        done
        let a++
        let b=1
        echo ""
done

Descripción:

Línea 4, si la prueba de condición: siempre que el valor de a no exceda 9, ingrese al bucle, una vez que exceda 9, no se ejecutará, las condiciones hasta y mientras son opuestas, la condición es verdadera y termina.

Línea 6, b> a, una vez que b sea mayor que a, no se ejecutará

Supongo que te gusta

Origin blog.csdn.net/weixin_46152207/article/details/113876153
Recomendado
Clasificación