- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:awk内でsystem関数を使用しfunction)
awk内でsystem関数を使用しfunctionを呼び出す事は可能でしょうか?
このQ&Aのポイント
- awk内でsystem関数を使用して、同一シェルに記述されたfunctionを呼び出すことは可能でしょうか?
- 実現したい内容は、awk内でfunctionを呼び出す際に引数を渡すことです。
- ただし、system関数内で呼び出そうとしているfunctionを正しく認識できるか疑問があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
awkスクリプトがおかしいというのをさておいても、シェル関数は定義したシェルプロセスの中だけで有効なので、system関数で生成される新たなシェルプロセスからは参照出来ません。 awk ' BEGIN{FS=":"} { system("function hoge { HOGE=$1;echo ${HOGE};};hoge AAA"); }'
その他の回答 (1)
- MillenniuM
- ベストアンサー率58% (42/72)
回答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!
質問者
お礼
ご回答ありがとうございました。 勉強になりました。
お礼
ありがとうございました。 ご説明頂いた内容で理解しました。