1 , el bucle while y el bucle anidado
( 1) Formato gramatical
while-do-done
Pruebe repetidamente la condición de la instrucción y repita la operación del comando correspondiente siempre que se cumpla la condición, hasta que el comando no se establezca o sea falso;
Formato de sintaxis:
mientras que el comando de prueba hace el comando hecho
( 2) Ejemplos
A , salida descendente 1-5
[root @ test ~] # vi while-1.sh #! / bin / bash i = 5 while [$ i -gt 0] do echo $ i i = $ [$ i-1] hecho [root @ test ~] # sh while-1.sh 5 4 3 2 1 [root @ test ~] #
B. Genere el resultado de sumar dos números
[root @ test ~] # cat while-2.sh #! / bin / bash i = 1 while [$ i -lt 5] do sum = $ (($ i + $ i)) echo "$ i + $ i = $ sum " ((i ++)) done # Los corchetes dobles pueden realizar operaciones lógicas, cuatro operaciones aritméticas [root @ test ~] # sh while-2.sh 1 + 1 = 2 2 + 2 = 4 3 + 3 = 6 4 + 4 = 8 [root @ test ~] #
( 3) Anidación de bucle
A. Crear usuario
[root @ test ~] # vi name.txt aa bb cc [root @ test ~] # vi useradd.sh #! / bin / bash para el nombre en $ (cat /root/name.txt) do id $ name &> / dev / null si [$? -ne 0]; luego useradd $ name echo "123456" | passwd --stdin $ name &> / dev / null echo "$ name is created" else echo "$ name is exist" fi done [root @ test ~] # sh useradd.sh aa se crea bb se crea cc se crea [root @ test ~] # id aa uid = 501 (aa) gid = 501 (aa) grupos = 501 (aa)
seq se usa para generar todos los enteros de un número a otro.
Uso: seq [Opciones] ... Mantisa o: seq [Opciones] ... Primer dígito Mantisa o: seq [Opción] ... Primer dígito Incremento Mantisa Imprime números desde el primer dígito hasta el último dígito en un incremento especificado. -f, --format = formato usa printf estilo formato de punto flotante -s, --separator = string usa la cadena especificada para separar números (uso predeterminado: \ n) -w, --equal-width agrega 0 antes de la columna Haga que el ancho sea el mismo: ayude a mostrar este mensaje de ayuda y salga: la versión muestra la información de la versión y sale
Dos formas de pasar del 1 al 100 (no he probado otros shells)
para x en `seq 1100`; haz echo $ x; hecho para x en {1..100}; haz echo $ x; hecho
-f especifica el formato de salida
#seq -f "% 3g" 13 El número de dígitos es de tres dígitos y no se requieren espacios
[root @ test ~] # seq -f “% 3g” 3 “1” “2” “3” [root @ test ~] #
#seq -f “% 03g” 1 5 El número de dígitos es de tres dígitos y faltan ceros
[root @ test ~] # seq -f “% 03g” 1 5 “001” “002” “003” “004” “005” [root @ test ~] #
#seq -f "str% 03g" 1 3
[root @ test ~] # seq -f "str% 03g" 1 3 str001 str002 str003 [root @ test ~] #
-w especifica el mismo ancho que el número de salida, que es similar a la parte -f y no se puede usar con la opción -f
#seq -w 8 12
[root @ test ~] # seq -w 8 12 08 09 10 11 12 [root @ test ~] #
-s especifica el separador, el separador predeterminado es / n (retorno de carro)
#seq -s "" 1 5 Espacio como separador
[root @ test ~] # seq -s "" 1 5 1 2 3 4 5 [root @ test ~] #
#seq -s "` echo -e "\ t" `" 1 3 \ t como separador
[root @ test ~] # seq -s "` echo -e "\ t" `" 1 3 1 2 3 [root @ test ~] #
Nota: echo -e interpreta caracteres de escape
Número público personal: