Este comando funciona bem, imprima o nome do host
awk -v MYHOST=$(hostname) '{printf(MYHOST)}'
Porém ao correr
awk -v MYHOST=$(hostname -I) '{printf(MYHOST)}'
lança um
awk: cannot open "ip address" (No such file or directory)
Responder1
Você devesempre use aspas duplas nas substituições de comandos. O seguinte comando foi corrigido, não gerará o erro:
awk -v MYHOST="$(hostname -I)" '{printf(MYHOST)}'
Sem $(hostname -I)
aspas, estes são os resultados possíveis (após expansão):
awk -v MYHOST= '{printf(MYHOST)}'
Isso funcionará formalmente.
awk -v MYHOST=1.2.3.4 '{printf(MYHOST)}'
Isso funcionará formalmente.
awk -v MYHOST=1.2.3.4 5.6.7.8 '{printf(MYHOST)}'
Isso será tratado
5.6.7.8
como um script e{printf(MYHOST)}
como um arquivo a ser analisado. O erro será semelhantecannot open '{printf(MYHOST)}' (No such file or directory)
, a menos que exista tal arquivo.awk -v MYHOST=1.2.3.4 5.6.7.8 9.10.11.12 … '{printf(MYHOST)}'
onde
…
indica zero ou mais endereços adicionais. Isso será tratado5.6.7.8
como um script e9.10.11.12 … '{printf(MYHOST)}'
como vários arquivos a serem analisados. O erro mencionará o primeiro "arquivo" inexistente, por exemplocannot open '9.10.11.12' (No such file or directory)
.Foi o que aconteceu no seu caso.