
Ich habe folgende Frage zu UNIX:
Was sonst noch benötigt wird, wenn die oberste Zeile
#!\bin\awk -f
to make it run as a command?
Ich denke, unabhängig vom Namen des Skripts muss ihm mit chmod die Berechtigung erteilt werden, damit es ausgeführt werden kann.
Antwort1
Die erste Zeile mit „#!“ ist ein vollständiger Pfadname zum auszuführenden Programm.
Pfadnamen in Linux enthalten einen Schrägstrich zwischen Verzeichnissen.
dh:
#!/bin/awk -f
oder
#!/bin/bash
oder
#!/usr/bin/perl
Das erste Skript würde das Skriptprogramm mit ausführen awk
, das zweite mit bash
und das dritte mit perl
.
Sie müssen die Datei außerdem mit folgendem Befehl ausführbar machen:
$ chmod +x myscript.sh
Antwort2
#!\bin\awk -f
ist eine gültige Shebang-Zeile, aber keine nützliche. Sie besagt, dass die Datei von dem \bin\awk
im aktuellen Verzeichnis aufgerufenen Programm interpretiert werden muss. Um die Frage also wörtlich zu beantworten, gibt es zwei Möglichkeiten, diese Datei als Befehl auszuführen:
Erstellen Sie eine Datei namens
\bin\awk
im aktuellen Verzeichnis, vermutlich durch Kopieren oder Verknüpfen einer Version von awk. Außerdem muss das Skript ausführbar gemacht werden.ln -s /bin/awk '\bin\awk' chmod +x /path/to/script /path/to/script
Rufen Sie awk explizit auf.
awk -f /path/to/script
Wenn das Ändern der Datei zulässig ist, sollte die Shebang-Zeile so bearbeitet werden, dass sie Sinn ergibt: Ersetzen Sie die Backslashs durch Schrägstriche. Und machen Sie die Datei ausführbar (was zweifellos die beabsichtigte Antwort ist, aber dies allein wäre keine korrekte Antwort).