Este comando funciona bien, imprime el nombre de host
awk -v MYHOST=$(hostname) '{printf(MYHOST)}'
Sin embargo al correr
awk -v MYHOST=$(hostname -I) '{printf(MYHOST)}'
lanza un
awk: cannot open "ip address" (No such file or directory)
Respuesta1
DeberíaUtilice siempre comillas dobles en las sustituciones de comandos.. El siguiente comando está corregido, no arrojará el error:
awk -v MYHOST="$(hostname -I)" '{printf(MYHOST)}'
Sin $(hostname -I)
comillas, estos son posibles resultados (después de la expansión):
awk -v MYHOST= '{printf(MYHOST)}'
Esto funcionará formalmente.
awk -v MYHOST=1.2.3.4 '{printf(MYHOST)}'
Esto funcionará formalmente.
awk -v MYHOST=1.2.3.4 5.6.7.8 '{printf(MYHOST)}'
Esto se tratará
5.6.7.8
como un script y{printf(MYHOST)}
como un archivo para analizar. El error será comocannot open '{printf(MYHOST)}' (No such file or directory)
, a menos que exista dicho archivo.awk -v MYHOST=1.2.3.4 5.6.7.8 9.10.11.12 … '{printf(MYHOST)}'
donde
…
indica cero o más direcciones adicionales. Esto se tratará5.6.7.8
como un script y9.10.11.12 … '{printf(MYHOST)}'
como varios archivos para analizar. El error mencionará el primer "archivo" inexistente, por ejemplocannot open '9.10.11.12' (No such file or directory)
.Esto es lo que pasó en tu caso.