awk で使用されるシェル コマンドには 2 つの方法があります:
1 つ。 system() を使用します
2. print cmd | "/bin/bash" を使用します
http://www.gnu.org/software/gawk/manual/gawk.html#I_002fO-Functions
1 つ。 system() の使用
awk プログラムでは、system() 関数を使用してシェルコマンドを呼び出すことができます
例: awk 'BEGIN{system("echo abc")}' file
echo abc は次のように使用されます「コマンドライン」はシェルによって実行されるため、次の結果が得られます:
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: コマンドが見つかりません
root@ubuntu:~#
root@ubuntu :~# awk 'BEGIN {v1=echo;v2=abc;system(v1" "v2)}'
root@ubuntu:~#
上記の例から、awk が system を呼び出す方法を簡単に分析してみましょう:
If system( ) 括弧 内部のパラメーターが二重引用符で囲まれていない場合、awk はそれが変数であると判断し、それらを awk 変数の定数で置き換えてからシェルに返します
system() 内のパラメーター括弧が追加されます。二重引用符がある場合、awk は引用符内の内容をシェルの「コマンドライン」
2 としてシェルに直接返します。 print cmd を使用します | "/bin/bash"
root@ubuntu:~# awk 'BEGIN{print "echo","abc" "/bin/bash"}'
abc
root@ubuntu:~#
root@ubuntu:~# awk 'BEGIN{print "echo","abc",";","echo","123" "/bin/bash"}'
abc
123
root@ubuntu:~#
3つ。概要
system() を使用するか、print cmd | "/bin/bash" を使用するか
awk は新しいシェルを開き、対応する cmdline パラメーターをシェルに送り返すため、現在のシェル変数と新しく開かれたシェル変数に注意してください
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:~#
上記の例では、エクスポートなし、これらの変数は現在のシェル変数にのみ存在するため、エコーできません
エクスポートされたものは環境変数なので、awk が新しいシェルを呼び出すときにエコーできます
その他 awk シェルで使用されます。コマンド - 簡単なメモ 関連記事については、PHP 中国語 Web サイトに注目してください。