shell study-11day - declaración de control de flujo de shell mientras

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:

image.png

Supongo que te gusta

Origin blog.51cto.com/13440764/2575383
Recomendado
Clasificación