Awk gibt den Fehler „Keine solche Datei oder kein solches Verzeichnis“ aus, wenn der Hostname -I verwendet wird.

Awk gibt den Fehler „Keine solche Datei oder kein solches Verzeichnis“ aus, wenn der Hostname -I verwendet wird.

Dieser Befehl funktioniert einwandfrei und druckt den Hostnamen

awk -v MYHOST=$(hostname) '{printf(MYHOST)}'

Beim Laufen jedoch

awk -v MYHOST=$(hostname -I) '{printf(MYHOST)}'

wirft einen

awk: cannot open "ip address" (No such file or directory)

Antwort1

Du solltestVerwenden Sie immer doppelte Anführungszeichen um Befehlsersetzungen. Der folgende Befehl ist behoben, er verursacht den Fehler nicht:

awk -v MYHOST="$(hostname -I)" '{printf(MYHOST)}'

Ohne $(hostname -I)Anführungszeichen sind dies mögliche Ergebnisse (nach der Erweiterung):

  • awk -v MYHOST= '{printf(MYHOST)}'
    

    Dies wird formal funktionieren.

  • awk -v MYHOST=1.2.3.4 '{printf(MYHOST)}'
    

    Dies wird formal funktionieren.

  • awk -v MYHOST=1.2.3.4 5.6.7.8 '{printf(MYHOST)}'
    

    5.6.7.8Dies wird als Skript und {printf(MYHOST)}als zu analysierende Datei behandelt . Der Fehler lautet wie folgt cannot open '{printf(MYHOST)}' (No such file or directory), sofern keine solche Datei vorhanden ist.

  • awk -v MYHOST=1.2.3.4 5.6.7.8 9.10.11.12 … '{printf(MYHOST)}'
    

    wobei null oder mehr zusätzliche Adressen angibt. Dies wird 5.6.7.8als Skript und 9.10.11.12 … '{printf(MYHOST)}'als mehrere zu analysierende Dateien behandelt. Der Fehler erwähnt die erste nicht vorhandene „Datei“, z. B. cannot open '9.10.11.12' (No such file or directory).

    Dies ist in Ihrem Fall passiert.

verwandte Informationen