Cómo escribir un bucle for en shell
La forma en que funciona el bucle for es extraer el significado de los elementos seriales, colocarlos en las variables especificadas en orden y luego ejecutar repetidamente el área de comando incluida (entre do y done) hasta que todo Los elementos están agotados.
Entre ellos, el serial es una combinación de algunas cadenas, separadas entre sí por delimitadores (como espacios) definidos por $IFS. Estas cadenas se denominan campos.
La estructura de sintaxis de for es la siguiente:
1
2
3
4 p>
para variable en serie
do
Ejecutar comando
done
Descripción:
Línea 1, coloque iterativamente los campos de la serie en variables
Líneas 2-4, luego el área de comando entre do y done se ejecutará repetidamente hasta que se hayan procesado todos los campos de la serie.
Diagrama de flujo:
Caso de uso 1
Utilice un bucle for para crear aaa1-aaa10 en el directorio de inicio y luego cree el directorio de bbb1-bbb10. en aaa1-aaa10
p>1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
para k en $( seq 1 10 )
do
mkdir /home/ kuangl/aaa${k}
cd /home/kuangl/aaa${k}
para l en $( seq 1 10 )
hacer
mkdir bbb ${l}
cd /home/kuangl/aaa${k}
hecho
cd .. p>
hecho p>
Explicación:
Línea 2, seq se usa para generar todos los números enteros de un determinado número a otro número.
La línea 4 crea una carpeta en el directorio de inicio.
Línea 6, usando un bucle for para crear la carpeta
Resultado de la prueba:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 p> p>
16
17
18
19
20
21 p>
22
23
24
25
[root@test01 kuangl]# ll
total 80
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa1
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa10 p>
drwxr-xr-x 12 raíz 4096 20 de julio 01:23 aaa2
drwxr-xr-x 12 raíz 4096 20 de julio 01:23 aaa3
drwxr-xr -x 12 raíz raíz 4096 20 de julio 01:23 aaa4
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa5
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa6
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa7
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa8
drwxr-xr-x 12 raíz raíz 4096 20 de julio 01:23 aaa9
[root@test01 kuangl]# cd aaa1
[root@test01 aaa1 ]# ll
total 40
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb1
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb10
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb2
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb3
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb4
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb5
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb6
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb7
drwxr-xr-x 2 raíz raíz 4
096 20 de julio 01:23 bbb8
drwxr-xr-x 2 raíz raíz 4096 20 de julio 01:23 bbb9
1
Caso de uso 2
Enumere el espacio en disco ocupado por cada subdirectorio en el directorio var.
1
2
3
4
5
6 p> p>
7
#!/bin/bash
DIR="/var"
cd $DIR
para k en $(ls $DIR)
hacer
[ -d $k ] amp amp; du -sh $k
hecho; p>
Descripción:
Línea 4, realice el procesamiento de bucle for en cada archivo en el directorio /var.
Línea 6, si el archivo en /var es un directorio, use du -sh para calcular el espacio en disco ocupado por el directorio.
Resultados de la prueba:
1
2
3
4
5
6
7
8
9
10
11 p> p>
12
13
14
15
16
17 p>
18
19
20
21
22
[root@test01 scripts ]# ./var.sh
276M de caché
4.0K cvs
84K db
8.0K vacíos
4.0K ftp
4.0K juegos
4.0K gdm
21G lib
4.0K local
16K bloqueo
Registro 7.4G
4.0K registros
0 correo
4.0K nis
4.0 K opt
4.0K preserve
336K run
3.7G spool
212K tmp
4.1G www
p>
4.0K año