Heim >php教程 >PHP开发 >In awk verwendete Shell-Befehle – eine kurze Anmerkung

In awk verwendete Shell-Befehle – eine kurze Anmerkung

高洛峰
高洛峰Original
2016-12-15 10:45:561282Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Häufig verwendete awk-BefehleNächster Artikel:Häufig verwendete awk-Befehle