使用主机名 -I 时,Awk 会抛出“没有这样的文件或目录错误”

使用主机名 -I 时,Awk 会抛出“没有这样的文件或目录错误”

此命令运行良好,打印主机名

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)

    这就是你的情况。

相关内容