bash scripting awk ifconfig

Tema del script Bash



scripting awk (5)

Puedo ejecutar este comando bien, con la salida que quiero:

ifconfig eth0 | grep HWaddr | awk ''{print $5}''

Sin embargo, cuando configuro el comando a una variable e imprimo la variable, aparece un error:

CASS_INTERNAL=`ifconfig eth0 | grep HWaddr | awk ''{print /$5}''` $CASS_INTERNAL

my internal xxx ip: command not found

Lo extraño: mi IP interna realmente aparece. ¿Cómo hago esto sin obtener un error? No debería importar, pero estoy usando la última versión de Ubuntu.


¿tal vez quieres

echo $CASS_INTERNAL


No está imprimiendo la variable, la está ejecutando como un nombre de comando. Estas buscando

echo "$CASS_INTERNAL"

(Adquiera el hábito de poner siempre comillas dobles para las sustituciones de variables).

Nota de shell más avanzada: en este caso no importa, pero en general el echo puede tener problemas con algunos caracteres especiales ( - y // ), por lo que es mejor usar el siguiente comando más complicado pero totalmente confiable:

printf "%s/n" "$CASS_INTERNAL"


no tienes que usar grep

ifconfig eth0 | awk ''/HWaddr/{print $5}''


CASS_INTERNAL=`ifconfig eth0 | grep HWaddr | awk ''{print /$5}''` echo $CASS_INTERNAL

Tu:

$CASS_INTERNAL

Intentaría ejecutarlo como un comando.


Bueno, primero grep para HWaddr, por lo que el quinto campo en esta línea es la dirección MAC del adaptador de red en cuestión, no su dirección IP local.

Otros han sugerido que la solución es simplemente hacer eco del resultado, lo que significa que si eth0 en este ejemplo no está disponible en el momento en que se ejecuta la línea, no funcionará.

Por lo que entiendo, en su lugar, desea poner la línea de comando deseada en una variable, y luego evaluarla más adelante. Este patrón se denomina comúnmente evaluación perezosa , y es posible en bash mediante el uso de eval builtin:

#put the desired command in variable CASS_INTERNAL=''ifconfig eth0 | grep HWaddr | awk "{print /$5}"'' # .... #at later on - evaluate its contents! eval $CASS_INTERNAL 11:22:33:aa:bb:cc