Juicio condicional del script de shell
1. Prueba de estado
test 条件表达式
Formato de ejemplo①:
- prueba 1 == 1
La prueba 1
es igual al 1
valor de retorno 0
es eltrue
Formato de ejemplo②:
- [1 == 1]
2. Prueba de archivos
[ 操作符 文件或目录 ]
Operadores de prueba de uso común
- -d prueba si es un directorio o si existe
- -e prueba si el archivo o directorio existe
- -f prueba si es un archivo
- -r prueba si el usuario actual tiene permiso para leer
- -w prueba si el usuario actual tiene permiso para escribir
- -x prueba si el usuario actual tiene permiso para ejecutar
[ 操作符 文件或目录 ] && echo "YES"
Por ejemplo:
- [-ea] & echo "objetivo encontrado"
Comparación de tres valores enteros
[ 整数1 操作符 整数2 ]
Operadores de prueba de uso común
- -eq es igual a
- -ne no es igual a
- -gt es mayor que
- -es menor que
- -le es menor o igual que
- -ge es mayor o igual que
Por ejemplo:
[ `who | wc-l` -gt 5 ] && echo "没有超额"
Ejemplo: inspección regular simple
a=`free -m | grep "Mem" | awk '{print $4}'`
[ $a -lt 100 ] && echo "剩余"${a}MB
if [ $a -lt 100 ]
then reboot fi;
Cuarto, comparación de cadenas
Operadores de prueba de uso común
- = El contenido de la cadena es el mismo
- ! = El contenido de la cadena es diferente ,! Signo significa lo contrario
- -z el contenido de la cadena está vacío
- n cadena tiene contenido
[ str1 = str2 ]
= Y == tienen la misma función
[str1! = str2] ¿Es diferente la cadena en la variable?
[-z str1] Verifique que el contenido de la cadena esté vacío
Los espacios también son cuerdas
[-n str1] Comprueba si hay una cadena
Las variables sin comillas dobles se juzgarán como cadenas simples
Por ejemplo:
[ $PWD = `pwd` ] && echo "The current directory is `pwd`"
Por ejemplo:
[ "en_US" != $LANG ] && echo "not en_US"
Cinco, prueba de lógica
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
Operadores de prueba de uso común
- -a o &&: lógico y, y el significado
- -o o ||: lógico o, o significado
- !: Lógico no
[ $a -ne 1 ] && [ $a != 2 ] 等同于 [ $a -ne 1 -a $a != 2 ]
Por ejemplo:
- echo [“1” == “1”] && echo “verdadero” || hacer eco de "sí"
Mientras uno no configura para realizar la siguiente
nota: &&
, ||
el operador puede existir normal de [[ ]]
la estructura de toma condiciones, pero si aparece en una [ ]
estructura, será el error
Ejemplo: utilice PING para determinar si el sitio web está disponible
- -c: el número de paquetes enviados
- -i: intervalo de tiempo para enviar paquetes
- -w: cuántos segundos para detener
ping -c 3 -i 0.5 -w 2 baidu.com > /dev/null && echo "$1 online" || echo "$1 off"
ping -c 3 -i 0.5 -w 2 example.com > /dev/null && echo "$1 online" || echo "$1 off"
Ejemplo: múltiples juicios:
[ -d /boot ] && [ -r /boot ] && echo "you can read"
Seis, sentencia de juicio
si declaración
La condición se true
realiza cuando se ejecuta then
la parte trasera, la
determinación debe agregarse en último lugar fi
para cerrarse
if condition
then
statement1
fi
Ejemplo: Es
(())
un comando de cálculo matemático. Además de las operaciones más básicas de suma, resta, multiplicación y división, también puede realizar operaciones relacionales como mayor que, menor que, igual a, y, o, y operaciones no lógicas. .
#!/bin/bash
if ((10 > 1))
then
echo "true"
fi
declaración if else
Si condition
es true
, funcionará statement1
como está false
, se ejecutarástatement2
if condition
then
statement1
else
statement2
fi
Por ejemplo:
#!/bin/bash
read input_1
read input_2
if (( $input_1 == $input_2 ))
then
echo "${input_1}=${inut_2}"
else
echo "${input_1}!=${input_2}"
fi
if declaración elif else
En cuanto condition1
al true
tiempo, se realizará statement1
, a continuación se determinará condition2
, si true
la ejecución statement2
, desde el principio si condition1
se va false
a realizar cuando else
la sentencia después de lastatementn3
if condition1
then
statement1
elif condition2
then
statement2
else
statementn3
fi
Por ejemplo:
#!/bin/bash
if ((10 > 1))
then
echo "1"
elif ((2 > 1))
then
echo "2"
else
echo "3"
fi
caso en declaración
►El principio de la línea de mayúsculas y minúsculas debe comenzar con la palabra "in", y cada patrón debe terminar con un solo corchete derecho ")" ►El
punto y coma doble ";;" indica el final de la secuencia de comandos
►En la cadena del patrón, cuadrado Los corchetes se pueden usar para indicar un rango continuo, como "[0-9]"; ► También puede usar una barra vertical | para indicar o, como a | b
► *) para indicar el modo predeterminado, donde * es equivalente a un comodín
case 变量值 in
判断1)
命令序列
;;
判断2)
命令序列
;;
……
*)
默认命令序列
esac
Por ejemplo:
read num -p "请输入数字:"
case $num in
1)
echo "1"
;;
2)
echo "2"
;;
*)
echo "error"
esac