while ture y while en la programación shell: ¿por qué son equivalentes?
Mientras es cierto y mientras está en la programación de shell: son de hecho equivalentes. Similar a while (1) en lenguaje C, usado para construir bucles infinitos.
Los bucles se utilizan a menudo en la programación de shell. Los bucles comúnmente utilizados incluyen los bucles for y while. El bucle while lee archivos por líneas de forma predeterminada, mientras que el bucle for lee archivos por espacios y divide archivos. Este artículo explicará el uso y las diferencias entre los dos basándose en algunos ejemplos de uso en la red actual.
1. Sintaxis comúnmente utilizada
1. bucle for
Las estructuras de sintaxis comúnmente utilizadas del bucle for son las siguientes:
for variable en cadena secuencial
para variable en `comando` " "
para variable en "$@" o "$*"
for((asignación; condición; declaración de operación))
2. Bucle while
Las estructuras de sintaxis comúnmente utilizadas del bucle while son las siguientes:
2. p >
Aquí tomamos el df común para obtener información del disco como ejemplo para conocer las diferencias en el procesamiento utilizando los métodos de bucle for y while. Echemos un vistazo al script que escribí primero. El contenido es el siguiente:
Los resultados cuando se ejecuta el script anterior son los siguientes:
Como puede ver, solo el Los dos últimos métodos normalmente pueden obtener los datos que queremos, los dos métodos anteriores son diferentes de los resultados que queremos al procesar. Los resultados de este ejemplo son:
1. Bucle while: lee el archivo en líneas, el delimitador predeterminado es espacio o tabulador
2. es decir, cuando se encuentra un espacio, el cuerpo del bucle comienza a ejecutarse, por lo que si es necesario leerlo en líneas, los espacios deben convertirse en otros caracteres.
3. Conexión SSH y espera
Aquí hay un script de prueba como ejemplo:
Los resultados de este ejemplo ya no se mostrarán aquí. use este script específicamente. Ssh varios hosts para realizar una prueba, y los resultados después de la prueba son los siguientes:
1. El cuerpo del bucle se ejecuta en segundo plano y los comandos posteriores se ejecutan. después de esperar a que se ejecute todo el cuerpo del bucle.
2. Bucle while: la espera no tiene ningún efecto, el cuerpo del bucle se ejecuta en segundo plano y los comandos posteriores también se ejecutan al mismo tiempo. Cuando hay ssh, scp y sshpass en el cuerpo del bucle, el bucle puede salir después de ejecutarlo una vez. Hay dos formas de resolver este problema:
a. /p>
b. Agregue redirección nula al bucle while, como ssh "cmd" lt /dev/null redirige la entrada ssh.