
Gracias por su paciencia. Soy nuevo en Linux y quería ayuda para entender cómo puedo analizar el resultado del comando de corte.
Entonces, actualmente tengo una variable
x=$(discover nginx --human=nood | cut -f1,6)
Entonces mi salida echo "$x
es una lista de cosas como
ID de instancia Dirección IP
En mi programa quiero ejecutar un bucle for sobre cada fila de x y extraer la primera y la segunda variable por separado. Por ejemplo: si fuera una matriz a[0] = ID de instancia y a[1]= IPAdderess
¿Alguien puede guiarme sobre cómo extraer los elementos por separado? Sé que puedo ejecutar un bucle $x
y hacer un corte dentro de él, pero estoy tratando de entender si hay una mejor manera de hacerlo.
Respuesta1
Para eso, no necesita almacenar los datos en una variable en absoluto, discover
bastará con un bucle sobre la salida de:
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
Alternativamente, en bash
o un shell que comprenda las sustituciones de procesos ( <( ... )
):
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )
La diferencia entre estos dos solo es visible si quieres llevar los valores de alguna variablefuera de la lupa. En el primer ejemplo, el bucle se ejecutará en una subcapa y, por lo tanto, no podrá utilizar ningún valor de las variables que se establezcan dentro del bucle.despuésel bucle (existen en su propio entorno local).
En el segundo ejemplo, no hay subcapas involucradas (excepto la que ejecuta la sustitución del proceso con discover
y cut
), por lo que se puede acceder a los valores de las variables después del ciclo.