Control de flujo de ejecución de shell (para, mientras, hasta, si, caso, espera, controlador)

1. Escriba el guión, los requisitos son los siguientes:
Inserte la descripción de la imagen aquí

Al escribir un script, intente poner la definición de la función al principio del script y no puede poner la definición de la función al final del script, de lo contrario, la función no se leerá;
Inserte la descripción de la imagen aquí

2. Para declaración:

结构:
for	定义变量
do	使用变量,执行动作
done	结束标志

格式1:
#!/bin/bash
for WESTOS in `seq 2 2 10`   #开始为2,结束为10(包含10),部长是2;即10以内的偶数
do
        echo $WESTOS
done

格式2:
for WESTOS in 1 2 3(westos linux lin)
do
        echo $WESTOS
done

格式3:
for WESTOS in {
    
    10..1} (从10到1)
do
        echo $WESTOS
done

格式4:
for ((WESTOS=0;WESTOS<10;WESTOS++))
do
        echo $WESTOS
done

Suplemento: comando seq: se usa para generar todos los enteros de un número determinado a otro

Sintaxis:
seq [opciones] ... mantisa
seq [opciones] ... primer número y mantisa
seq [opciones] ... primer número incremento mantisa

Parámetros:
-f, --format = formato utiliza el formato de punto flotante de estilo printf
-s, --separator = string usa la cadena especificada para separar números (uso predeterminado: \ n)
-w, --equal-width delante de la columna Agregue 0 para que el ancho sea el mismo

Escritura de secuencia de comandos:
check_host.sh
Utilice esta secuencia de comandos para detectar si 10 hosts conectados directamente a su host actual tienen una red normal.
Si la red es normal, muestre la lista de IP del host

Inserte la descripción de la imagen aquí

Escritura de script:
create_user_file.sh agregar archivo usernamefile agregar archivo userpasswd
y preguntar si el usuario existe, crear si no;

Inserte la descripción de la imagen aquí

3. Declaración while y declaración until:

whilewhile ture	#条件为真
do		#条件成立所作循环动作

done

untiluntil false	##条件为假
do
		#条件不成立所作循环动作

done

En el bloque de ejecución (do) de la instrucción while y la instrucción hasta, debe haber una condición para controlar la variable; de ​​lo contrario, se repetirá indefinidamente: la
instrucción while genera una tabla de multiplicar del 99:
Inserte la descripción de la imagen aquí

La sentencia hasta genera la tabla de multiplicar del 99:
Inserte la descripción de la imagen aquí

4. Si declaración:

if
then
elif
then
...
else
fi

Ejercicio de script:
check_file.sh
por favor ingrese el nombre del archivo: el archivo del
archivo no existe el
archivo es el
archivo es directorio
Este script seguirá preguntando hasta que el usuario ingrese a exit
Inserte la descripción de la imagen aquí

La declaración if ejecutará el juicio varias veces de arriba a abajo, hasta que se juzgue la declaración que cumple con las condiciones (mecanismo de juicio, sí y no). La
declaración del caso se juzga solo una vez (mecanismo de llamada)

Declaración 5.case:

case $1 in
	word1|WORD1)
	action1
	;;
	word2|WORD2)
	action2
	;;
	*)
	action3
esac

Ejercicio de guión:
system_watch.sh carga de memoria de disco (se muestra cada segundo)
monitor de disco uso de disco
monitor de memoria uso de memoria
carga de monitor carga de inicio
Inserte la descripción de la imagen aquí

Declaración 6.expect:


问题脚本
#!/bin/bash
read -p "what's your name:" NAME
read -p "How old are you: " AGE 
read -p "Which objective: " OBJ
read -p "Are you ok? " OK

echo $NAME is $AGE\'s old study $OBJ feel $OK

应答脚本
#!/usr/bin/expect
set timeout 1                 ##脚本问答等待时间
set NAME [ lindex $argv 0 ]   ##第一个字符
set AGE  [ lindex $argv 1 ]
set OBJ  [ lindex $argv 2 ]
set FEEL [ lindex $argv 3 ]
spawn /mnt/ask.sh
expect {
    
    
	"name"	{
    
     send "$NAME\r";exp_continue }
	"old"		{
    
     send "$AGE\r";exp_continue }
	"objective"	{
    
     send "$OBJ\r";exp_continue }
	"ok"		{
    
     send "$FEEL\r" }
}
expect eof

将应答脚本写入shell:
#!/bin/bash
echo hello westos
/usr/bin/expect <<EOF
spawn /mnt/ask.sh
expect {
    
    
"name"	{
    
     send "$1\r";exp_continue }
"old"		{
    
     send "$2\r";exp_continue }
"objective"	{
    
     send "$3\r";exp_continue }
"ok"		{
    
     send "$4\r" }
}
expext eof

Ejercicio de script:
host_list.sh
detecta si la red 172.25.254.1-172.25.254.10 está abierta.
Si está abierta, la lista de resolución generada es la siguiente:
nombre de host ip
tal como: 172.25.254.1 westos_Student1.westos.org 7.break
Inserte la descripción de la imagen aquí
, continue, exit controller:
"$? "Indica el valor de salida, la salida del resultado correcto o el valor de salida después de la salida es 0;

continue	##终止当此次前循环提前进入下个循环
break		##终止当前所在语句所有动作进行语句外的其他动作
exit		##脚本退出

Supongo que te gusta

Origin blog.csdn.net/lb1331/article/details/111636747
Recomendado
Clasificación