Awk-Skriptverwendung

839
Vaibhav

Wo sollte die Befehlsdatei des Programms awk abgelegt werden, wenn ich versuche, den Befehl awk in einem Shell-Skript auszuführen? Ich denke, es sollte sich im selben Verzeichnis befinden, aber nicht sicher. Bitte helfen

0

2 Antworten auf die Frage

2
cbz

Wenn Sie versuchen, einen awk-Befehl über ein Shell-Skript auszuführen, muss sich der awk-Befehl innerhalb des von der Skriptdatei verwendeten PFAD befinden. Der einfachste Weg, um sicherzustellen, dass dies der Fall ist (und um sicherzustellen, dass das Skript nicht fälschlicherweise Dinge in der Benutzerumgebung aufnimmt, ist es, den PATh selbst oben in die Skriptdatei zu setzen). z.B:

PATH = / usr / bin: / bin: / usr / local / bin

In der Regel wird awk auf Systemebene in eine davon installiert. Befindet sich awk lediglich im selben Verzeichnis wie das Skript, wird es nicht abgeholt, es sei denn, dieses Verzeichnis befindet sich im Pfad oder "." befindet sich im PATH und Sie führen das Skript aus dem Verzeichnis aus, in dem es sich befindet.

Das Festcodieren eines Pfads in einem Shell-Skript kann zu Problemen führen, bei denen andere Verzeichnisse "bin" und "sbin" möglicherweise ignoriert werden. In NetBSD beispielsweise, wo das Paketsystem (pkgsrc) verwendet wird, enthält der von Ihnen vorgeschlagene Pfad nicht die Verzeichnisse / usr / pkg / bin / oder / usr / pkg / sbin /. Randolf Richardson vor 13 Jahren 0
Nun - in diesem Fall müsste man entsprechend hart codieren. Sich auf den Benutzersatz PATH zu verlassen, ist schlimmer - Sie haben keine Garantie, dass dies korrekt ist, und außerdem öffnen Sie eine Lücke, die bösartige Software an einem anderen Ort als dem Standard installiert hat. Das Skript muss seine eigenen Abhängigkeiten enthalten, andernfalls ist die Benutzererfahrung unvorhersehbar. cbz vor 13 Jahren 1
0
Randolf Richardson

Wenn es sich im aktuellen Arbeitsverzeichnis befindet, verwenden Sie "./awk" anstelle von "awk" für den Befehl. Normalerweise wird es unter Unix / Linux im Pfad sein.