此命令运行良好,打印主机名
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)
。这就是你的情况。