使用主機名稱 -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).

    這就是你的案例中發生的情況。

相關內容