Juicio condicional del script de shell | estructura de la declaración if else | estructura de la declaración del caso | super detallada

1. Prueba de estado

test 条件表达式

Formato de ejemplo①:

  • prueba 1 == 1

La prueba 1es igual al 1valor de retorno 0es 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 truerealiza cuando se ejecuta thenla parte trasera, la
determinación debe agregarse en último lugar fipara 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 conditiones true, funcionará statement1como 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 condition1al truetiempo, se realizará statement1, a continuación se determinará condition2, si truela ejecución statement2, desde el principio si condition1se va falsea realizar cuando elsela 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

Supongo que te gusta

Origin blog.csdn.net/qq_42427971/article/details/114355627
Recomendado
Clasificación