該指令工作正常,列印主機名
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)
.這就是你的案例中發生的情況。