プロが教える店舗&オフィスのセキュリティ対策術

環境:AIX5.2 シェル:ksh を使用してシェルを作成しています。

awk内でsystem関数を使用しfunctionを呼び出す事は可能でしょうか?

実現したい内容は以下です。
・awk内で同一シェルに記述されたfunctionを呼び出す
・functionを呼び出す際には引数を渡す

記述イメージ的に以下のような感じでスクリプトに記述していますが、
system関数内で呼び出そうとしているfunctionをfunctionとして
認識できないのでは??っという疑問を持ち始めてます。

function hoge{
 HOGE=$1
echo ${HOGE}
}

awk'{
BEGIN{FS=":"}
system(hoge AAA)
}'

A 回答 (2件)

awkスクリプトがおかしいというのをさておいても、シェル関数は定義したシェルプロセスの中だけで有効なので、system関数で生成される新たなシェルプロセスからは参照出来ません。



awk '
BEGIN{FS=":"}
{
system("function hoge { HOGE=$1;echo ${HOGE};};hoge AAA");
}'
    • good
    • 0
この回答へのお礼

ありがとうございました。
ご説明頂いた内容で理解しました。

お礼日時:2011/05/26 19:00

単にexportされた環境変数にアクセスしたいなら配列ENVIRONを


使えば良いと思います。ENVIRON["HOME"]のように。
そうでないのであれば、シェルスクリプトにawkスクリプトを
埋め込むのが常道でしょうか。

test.sh:
#!/bin/sh
hoge=" Oops!"
awk "{ print \$0, \"""${hoge}""\";}" $@

$ sh test.sh test.sh
#!/bin/sh Oops!
hoge=" Oops!" Oops!
awk "{ print \$0, \"""${hoge}""\";}" $@ Oops!
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
勉強になりました。

お礼日時:2011/05/26 19:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!