Es gibt zwei Methoden für Shell-Befehle, die in awk verwendet werden:
1. Verwenden Sie system()
2. Verwenden Sie print cmd |. "/bin/bash"
http://www.gnu.org/software/gawk/manual/gawk.html#I_002fO-Functions
Eins. Verwenden von system()
Im awk-Programm können wir die Funktion system() verwenden, um den Shell-Befehl aufzurufen
, wie zum Beispiel: awk 'BEGIN{system("echo abc")}' Datei
echo abc wird als „Befehlszeile“ verwendet und von der Shell ausgeführt, sodass wir die folgenden Ergebnisse erhalten:
root@ubuntu:~# awk ' BEGIN{system("echo abc ")}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{v1="echo";v2 ="abc";system( v1" "v2)}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{v1="echo ";v2="abc" ;system(v1 v2)}'
/bin/sh: echoabc: Befehl nicht gefunden
root@ubuntu:~#
root@ubuntu: ~# awk 'BEGIN{v1 =echo;v2=abc;system(v1" "v2)}'
root@ubuntu:~#
Anhand des obigen Beispiels wollen wir kurz analysieren, wie awk system aufruft :
Wenn die Parameter in den system()-Klammern nicht in doppelte Anführungszeichen gesetzt sind, geht awk davon aus, dass es sich um eine Variable handelt, ersetzt sie durch Konstanten aus den awk-Variablen und gibt sie dann an die Shell zurück
Wenn die Parameter in den system()-Klammern in doppelte Anführungszeichen eingeschlossen sind, übergibt awk den Inhalt in den Anführungszeichen direkt als „Befehlszeile“ der Shell an die Shell zurück
2. Verwenden Sie print cmd | :~#
root@ubuntu:~# awk 'BEGIN{print „echo“, „abc“, „;“, „echo“, „123“| „/bin/bash“} '
abc
123
root@ubuntu:~#
Drei. Zusammenfassung
Ob Sie system() oder print cmd | verwenden.
awk öffnet eine neue Shell und die entsprechenden cmdline-Parameter werden an die Shell zurückgesendet, achten Sie also auf die aktuellen Shell-Variablen und das neu geöffnete Shell-Variablenproblem
1.1
root@ubuntu:~# abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc")}'
root@ubuntu:~#
1.2
root@ubuntu:~# export abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc") }'
12345567890
root@ubuntu:~#
2.1
root@ubuntu:~# abc=1234567890
root@ubuntu:~# awk 'BEGIN {print "echo ","$abc"|. "/bin/bash"}'
root@ubuntu:~#
2.2
root@ubuntu:~# export abc=1234567890
root@ubuntu:~# awk 'BEGIN{print "echo","$abc"| "/bin/bash"}'
1234567890
root@ubuntu:~#
Wenn im obigen Beispiel kein Export erfolgt, sind diese Variablen nur in den aktuellen Shell-Variablen vorhanden, sodass sie nicht wiedergegeben werden.
Wenn der Export verwendet wird, werden alle Umgebungsvariablen verwendet Wenn awk eine neue Shell aufruft, kann ein Echo ausgegeben werden
Weitere in awk verwendete Shell-Befehle – Ein kurzer Hinweis Für verwandte Artikel achten Sie bitte auf die chinesische PHP-Website!