La expansión del parámetro de eco de programación de shell durante, mientras, hasta que tres declaraciones de bucle más break para saltar fuera del bucle continúan abortando el bucle IFS field separator-illustration

Inserte la descripción de la imagen aquí

Parámetros de eco

  • echo -n # significa que no hay salida de nueva línea
    Inserte la descripción de la imagen aquí

  • echo -e muestra los caracteres de escape, muestra el contenido de escape en la pantalla (debe usarse con comillas dobles)

  • Los caracteres de escape más utilizados son:\b \c \n \f \v \t \r \\

    • \ b : Después de escapar, es equivalente a presionar la tecla de retroceso (retroceso), pero solo si hay caracteres después de "\ b": "\ b" significa eliminar el carácter anterior, y "\ b \ b" significa eliminar el primeros dos personajes
      Inserte la descripción de la imagen aquí

    • \ c : salida sin salto de línea. Cuando no hay caracteres después de "\ c", la función es equivalente a echo -n, pero cuando todavía hay caracteres después de "\ c", los caracteres después de "\ c" no serán Producción
      Inserte la descripción de la imagen aquí

    • \ n : Nueva línea, los caracteres que se generarán comienzan en una nueva línea desde "\ n". En Linux, \ n tiene el significado de retorno de carro.
      Inserte la descripción de la imagen aquí

    • \ f : nueva línea, pero el comienzo de la nueva línea después de la nueva línea está conectado al final de la línea anterior
      Inserte la descripción de la imagen aquí

    • \ v : igual que \ f

    • \ t : Después de escapar, significa insertar una pestaña, es decir, una pestaña horizontal
      Inserte la descripción de la imagen aquí

    • \ r : El cursor se mueve al principio de la línea, pero no se ajusta, lo que equivale a usar los caracteres después de "\ r" para sobrescribir los caracteres de la misma longitud antes de "\ r", pero cuando no hay ningún carácter. después de "\ r", "\ r" "El carácter anterior no se sobrescribirá
      Inserte la descripción de la imagen aquí

    • \\ : significa insertar "\" en sí mismo
      Inserte la descripción de la imagen aquí

declaración de bucle

para declaración de bucle

  • Leer diferentes valores de variables para ejecutar el mismo conjunto de comandos uno por uno (denominados colectivamente operación transversal)
  • formato
for 变量名 in 取值列表
do
  命令序列
done

Inserte la descripción de la imagen aquí

  • El ejemplo de bucle for más simple

    • La primera forma de expresión: i en {1… 10} —— i en {1… 10… 2} 2 significa sumar 2 después de cada ciclo de manera iterativa
      Inserte la descripción de la imagen aquí
    • La segunda forma de expresión: i en $ (seq 1 10) —— i en $ (seq 1 2 10) tiene el mismo significado que el anterior
      Inserte la descripción de la imagen aquí
    • La tercera forma de expresión: (i = 1; i <10; i ++) —— (i = 1; i <= 10; i + = 2) El mismo significado que el anterior
      Inserte la descripción de la imagen aquí
  • Ejemplo de aplicación y aprendizaje en vivo 1
    Agregar usuarios en lotes: los nombres de usuario se almacenan en el archivo users.txt, cada línea, la contraseña inicial se establece en 123456
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

  • Ejemplo 2 de aprendizaje en vivo
    Verifique el estado del host según la dirección IP. La dirección IP se almacena en el archivo ipadds.txt, uno por línea. Utilice el comando ping para verificar la conectividad de cada host
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

while declaración de bucle

  • Pruebe una determinada condición repetidamente y ejecútela repetidamente siempre que la condición sea verdadera
  • formato
while 条件测试操作
do
  命令序列
done

Inserte la descripción de la imagen aquí

  • Si bien es una operación simple (la posición de inserción de la iteración en el contenido de salida tiene una cierta relación)
    Inserte la descripción de la imagen aquí
  • Algunos ejemplos de la aplicación de la instrucción while
    1. Agregar usuarios en lotes: el nombre de usuario debe comenzar con stu y estar numerado en orden numérico. Hay 20 en total, a saber, stu1 ... stu20, y la contraseña se establece en 123456
    Inserte la descripción de la imagen aquí
  • Mejora de la dificultad
    2. Adivina el juego del precio de los productos básicos: obtén un número aleatorio a través de la variable RANDOM, pide al usuario que adivine y registre el número de veces, y sal del ciclo después de adivinar
  • RANDOM puede obtener aleatoriamente valores aleatorios de 0-32767
  • Si queremos generar números en el rango de 0-25:$(($RANDOM%26))
  • Si desea obtener un número en el rango de 1 a 68: $(($RANDOM%68+1 ))
  • Si desea obtener un número en el rango de 6-87: $(($RANDOM%82+6 ))
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

hasta la declaración de bucle

  • Pruebe una determinada condición repetidamente y ejecútela repetidamente siempre que la condición no esté establecida
  • Equivalente a while a su vez con while, hasta que parece un poco insípido
until 条件测试操作
do 
  命令序列
done

Inserte la descripción de la imagen aquí

  • hasta simple operación
    Inserte la descripción de la imagen aquí
  • Algunos ejemplos de la instrucción hasta
    1. Calcule el valor de la suma de 1 a 50 y calcule por acumulación de bucle
    Inserte la descripción de la imagen aquí

salir del bucle

  • break : Salta del bucle que contiene break
  • Bucle doble simple
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • Salta del bucle de una sola capa en el bucle interior
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • la ruptura es secuencial

Inserte la descripción de la imagen aquí

  • break 2 : significa que el número después de saltar de la segunda capa del bucle es cuántas capas quedan fuera del bucle

continuar abortando un solo bucle

  • Continuar : Aborta un comando en un bucle, pero no detendrá por completo el comando completo.
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  • No se recomienda usar continue in a while.
    Inserte la descripción de la imagen aquí
    #Continue se usa en while. En este momento, la posición del código iterativo es muy importante y afectará el resultado de todo el código.

Separador de campo IFS

  • El separador de campo IFS
    contiene espacios , tabulaciones y nuevas líneas de forma predeterminada\t\n

Si un fragmento de contenido editado en users.txt tiene espacios
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

  • IFS=$' \t\n'
    Inserte la descripción de la imagen aquí
  • Puede redefinir la variable de IFS
    IFS=$'\n'# para reconocer solo el carácter de nueva línea
  • ¿Qué debo hacer si no se puede reconocer el espacio después de que se modifica IFS y se realizan otras operaciones?
IFS=$'\n'    #进行重新定义变量IFS只识别换行符
OLDIFS=$' \t\n'   #重新定义之前的内容
.......
IFS=$OLDIFS   #把定义的变量重新定义给IFS

Supongo que te gusta

Origin blog.csdn.net/weixin_53496398/article/details/114446196
Recomendado
Clasificación