Эта команда отлично работает, печатая имя хоста
awk -v MYHOST=$(hostname) '{printf(MYHOST)}'
Однако при запуске
awk -v MYHOST=$(hostname -I) '{printf(MYHOST)}'
бросает
awk: cannot open "ip address" (No such file or directory)
решение1
Вам следуетвсегда используйте двойные кавычки при замене команд. Следующая команда исправлена, она не будет выдавать ошибку:
awk -v MYHOST="$(hostname -I)" '{printf(MYHOST)}'
При $(hostname -I)
отсутствии кавычек возможны следующие результаты (после расширения):
awk -v MYHOST= '{printf(MYHOST)}'
Формально это будет работать.
awk -v MYHOST=1.2.3.4 '{printf(MYHOST)}'
Формально это будет работать.
awk -v MYHOST=1.2.3.4 5.6.7.8 '{printf(MYHOST)}'
Это будет рассматриваться
5.6.7.8
как скрипт и{printf(MYHOST)}
как файл для анализа. Ошибка будет выглядеть такcannot open '{printf(MYHOST)}' (No such file or directory)
, если такого файла нет.awk -v MYHOST=1.2.3.4 5.6.7.8 9.10.11.12 … '{printf(MYHOST)}'
где
…
указывает ноль или более дополнительных адресов. Это будет рассматриваться5.6.7.8
как скрипт и9.10.11.12 … '{printf(MYHOST)}'
как несколько файлов для анализа. Ошибка будет упоминать первый несуществующий "файл", напримерcannot open '9.10.11.12' (No such file or directory)
.Именно это и произошло в вашем случае.