Ya hemos aprendido a escribir un script de shell relativamente simple: cada instrucción se ejecuta en secuencia, para realizar el proceso automático de "procesamiento por lotes"
Sin embargo, hay más estructuras secuenciales "únicas" escritas así. ¿Te resultaría más fácil? De esta manera, el guión está demasiado mecanizado, como una tubería, ¡no lo suficientemente "inteligente"!
Entonces, ¿cómo podemos lidiar con calma con las tareas complejas del sistema?
Aprendamos a realizar operaciones de prueba condicionales, y mediante el uso correcto de las sentencias if, para que el script de shell tenga cierta capacidad de "juicio", para completar diferentes tareas de gestión de acuerdo con diferentes condiciones.
1. Prueba de estado
1. Prueba comando-prueba
Para que el programa de script de shell tenga un cierto "inteligente", el primer paso es distinguir entre diferentes situaciones para determinar qué operación realizar
El entorno Shell juzga si la ejecución es exitosa de acuerdo con el valor de estado de retorno ($?) Después de que se ejecuta el comando . Cuando es 0, es exitosa (indicando que la condición está establecida), de lo contrario (valor distinto de cero) indica falla o excepción.
Ejemplo: Determine el tamaño de la memoria libre disponible actualmente (libre). Si la memoria actual es menor a 3333MB, se recomienda limpiarla a tiempo (tengo una configuración más alta para la máquina virtual aquí ==)
La primera cadena tiene el mismo contenido que la segunda cadena
! =
¡La primera cuerda es diferente de la segunda! Signo significa lo contrario
-con
Compruebe si el contenido de la cadena está vacío. Las variables que no estén definidas o que no tengan asignado un valor nulo se tratarán como cadenas vacías.
Determinar la dependencia entre dos o más condiciones.
Cuando la tarea del sistema depende de múltiples condiciones diferentes, el juicio se basa en si estas condiciones se establecen al mismo tiempo o solo se establece una de ellas.
-a o &&: lógico y, que significa "y", tanto antes como después de que se cumplan las condiciones
-o o ||: OR lógico, "o" es decir, uno de los dos es suficiente
! : Lógicamente no, solo cuando no se establece la condición especificada, se establece el resultado
Los operadores "&&", "||" normalmente pueden existir en la estructura de juicio condicional "[[]]", pero si aparecen en la estructura "[]", se informará un error
Si la condición es verdadera, ejecute el comando después de eso, ignore el else, hasta el final de fi (aquí continúe de acuerdo con la plantilla anterior)
Si la condición no está establecida, ignore entonces, salte a la secuencia de comando después de else, hasta el final de fi
2.3 Declaración de múltiples ramas
##基本格式
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
[root@localhost ~]# vim ccc.sh
#!/bin/bash
read -p "请输入你的成绩(0~100):" cj
if [ $cj -ge 80 ] && [ $cj -le 100 ]
then
echo "优秀"
elif [ $cj -ge 60 ] && [ $cj -le 80 ]
then
echo "良好"
else
echo "不及格"
fi
Tres, declaración de rama de caso
La declaración de caso se utiliza principalmente en los siguientes escenarios: cuando hay varios valores para cada variable, se debe ejecutar una secuencia diferente de comandos para cada valor.
La declaración if es para juzgar múltiples condiciones diferentes, y el caso juzga los diferentes valores de una variable.
1. Estructura
##基本格式
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
....
*)
默认命令序列
esac
El final de la línea del caso debe ser la palabra en, y cada línea debe terminar con un corchete ")"
El doble punto y coma ";;" indica el final de la secuencia de comandos.
Puede utilizar corchetes "[]" para indicar un rango continuo; también puede utilizar "|" para indicar, como "A | B"
El último ") *" significa el modo predeterminado, si los valores anteriores no son los mismos, ejecute esta línea
2. Ejemplo de aplicación
[root@localhost ~]# vim ddd.sh
#!/bin/bash
#不说了我要去罚抄了
read -p "请输入你的分数: " sub
case $sub in
100)
echo "恭喜你 逃过一劫"
;;
8[0-9]|9[0-9])
echo "每道错题抄10遍"
;;
6[0-9]|7[0-9])
echo "每道错题抄20遍"
;;
*)
echo "呵呵 全部30遍"
esac