Declaración de prueba condicional del script de Shell, si, caso
1. Prueba de condición
1.1 comando de prueba
Pruebe si una expresión específica es verdadera. Cuando la condición es verdadera, el valor de retorno de la declaración de prueba es 0; de lo contrario, son otros valores.
格式:
test 条件表达式
或【条件表达式】(条件表达式的两边都需要有空格,且此方法更为常用)
1.2 Prueba de archivo
1.2.1 Opciones comunes para pruebas de archivos
Operadores de prueba comunes | significado |
---|---|
-d | prueba de directorio |
-mi | Prueba de la existencia de un directorio o archivo. |
-F | prueba de archivo |
-r | Pruebe si el usuario actual tiene permiso para leer |
-w | Pruebe si el usuario actual tiene permiso para escribir |
-X | Pruebe si el usuario actual tiene permiso para ejecutar |
-l | Pruebe si es un archivo de enlace suave |
-Nuevo Testamento | Determinar si el archivo A es más nuevo que el archivo B |
-Antiguo Testamento | Determinar si el archivo A es anterior al archivo B |
-ef | Determinar si dos archivos son el mismo archivo |
1.3 Comparación numérica
格式:
【整数1 操作符 整数2】
Operadores de prueba comunes
operador | significado |
---|---|
-eq | igual |
- es | no igual a |
-lt | xiaoyu |
-gt | más que el |
- el | Menos que o igual a |
-ge | Mayor qué o igual a |
Consulte si la cantidad de archivos en el directorio actual es mayor que 10 y, de ser así, solicite
[root@localhost ~]#ls |wc -l
15
[root@localhost ~]#test `ls |wc -l` -gt 10 && echo 文件数大于10
文件数大于10
Compruebe si la memoria del sistema es inferior a 1024 M; si es inferior, solicite
[root@localhost ~]#free -m
total used free shared buff/cache available
Mem: 1758 359 790 17 608 1161
Swap: 3839 0 3839
[root@localhost ~]#free -m|grep "Mem"
Mem: 1758 359 791 17 608 1161
[root@localhost ~]#free -m|grep "Mem"|awk '{print $4}'
790
[root@localhost ~]#free=`free -m|grep "Mem"|awk '{print $4}'`
[root@localhost ~]#echo $free
790
[root@localhost ~]#test `echo $free` -lt 1024 && echo 内存不足1024M
内存不足1024M
[root@localhost ~]#
1.4 Comparación de cadenas
格式:
【字符串1=字符串2】 # 判断是否相等
【字符串1!= 字符串2】 # 判断是否不等
【-z 字符串】 # 判断字符串是否为空
operador
operador | significado |
---|---|
= | el contenido de la cadena es igual |
!= | El contenido de la cadena es diferente. signo significa lo contrario |
-z | la cadena está vacía |
[root@localhost ~]#echo $LANG
zh_CN.UTF-8
[root@localhost ~]#test `echo $LANG`="us.en"&&echo 当前系统语言不是us.en,当前系统语言为`echo $LANG`
当前系统语言不是us.en,当前系统语言为zh_CN.UTF-8
[root@localhost ~]#
1.5 Prueba lógica
格式:
【表达式1】操作符 【表达式2】
命令1 操作符 命令2
operador:
-a或&& | Y lógico, y el significado. |
---|---|
-o o ll | lógico o, o significado |
! | lógico no |
Declaración dos.if
2.1 Estructura de sucursal única
格式
if 【条件判断式】;than
当条件判断成立时,执行一条或多条命令
fi
Si solo hay un juicio por realizar, entonces podemos usar una declaración if de una sola rama, que solo se ejecutará cuando la condición sea verdadera; de lo contrario, no se ejecutará nada.
2.3 Multi-rama
if【条件判断式】;then
当条件判断成立时,可以执行一条或多条命令
elif【条件判断式二】;then
当条件判断成立时,可以执行一条或多条命令
else
当上面条件判断都不成立时,可以执行一条或多条命令
fi
Si es necesario juzgar los datos de manera diferente, puede usar la estructura de múltiples ramas para anidar
Declaración de tres casos
格式;
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第一个变量内容的其他程序执行段
默认程序段
;;
esac
punto importante:
- Una línea de caso debe comenzar con la palabra "in" y cada patrón debe terminar con un único paréntesis de cierre.
- Un punto y coma doble ";;" indica el final de una secuencia de comando
- En la cadena de patrón, puede usar corchetes para representar un rango continuo, como "[0-9]"; también puede usar | para representar o, como a|b
- El último) significa el modo predeterminado, donde equivale a un comodín