• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:awk内でsystem関数を使用しfunction)

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

このQ&Aのポイント
  • awk内でsystem関数を使用して、同一シェルに記述されたfunctionを呼び出すことは可能でしょうか?
  • 実現したい内容は、awk内でfunctionを呼び出す際に引数を渡すことです。
  • ただし、system関数内で呼び出そうとしているfunctionを正しく認識できるか疑問があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.1

awkスクリプトがおかしいというのをさておいても、シェル関数は定義したシェルプロセスの中だけで有効なので、system関数で生成される新たなシェルプロセスからは参照出来ません。 awk ' BEGIN{FS=":"} { system("function hoge { HOGE=$1;echo ${HOGE};};hoge AAA"); }'

kazuau2002
質問者

お礼

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

その他の回答 (1)

回答No.2

単に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!

kazuau2002
質問者

お礼

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

関連するQ&A