awkプログラムをシェルスクリプトから走らせるとき
に値を渡す


falcon2

2010-01-20 23:29

今awkプログラム(stdDivPre.awk)とシェルスクリプト(シェルはbash)(preDist.sh)という2つのファイルがあります.
シェルスクリプトからawkプログラムを走らせます.その際に,シェルスクリプト内で生じた値をawkプログラムに渡したいのですが,シェルスクリプト内で以下の様にawkプログラムを走らせると,BEGIN句内は処理し,値はawkに渡っていますがawkが入力を待っている状態となりデータファイルが処理されません.
うまく説明ができませんが,お知恵を貸してください.
シェルスクリプト


./stdDivPre.awk -v 変数名=渡したい値 データーファイル


awkプログラムの初め

#!/usr/bin/awk -f


コメント

2010-01-21 10:34

"渡したい値 データーファイル"の間の全角スペースを、シェルがセパレータと認識せずに、値の一部として渡しているのではないでしょうか。環境を明示されてないので何とも言えませんが、プロセスの詳細を見て、どのように引数が渡ってるか調べてみてはいかがでしょうか。

どうしても解決できなかったら、標準入力から入れるとか。
cat データファイル|./stdDivPre.awk -v 変数名=渡したい値

2010-01-21 11:50

>>Ray
環境は,OSがubuntu ver.9.10 awkはgawk ver.3.1.6 です.
catで展開して標準入力でawkに渡した場合は,うまくいきました.
根本的な解決にはなっては,いませんがとりあえずこれで行こうと思います.