awkのコマンドラインパラメータ

awkのコマンドラインパラメータ

awkでif条件を実装したいです。以下のように「simple_if」というファイル名を作成しました。

BEGIN{
num=$1;
if (num%2==0)
printf "%d is Even number.\n",num;
else printf "%d is odd Number.\n",num
}

次に、次のように$ 1のパラメータに10を渡してプログラムを実行します。

awk -f simple_if 10

ただし、入力を許可せず、代わりにゼロを表示します。出力:

0 is Even number.

awkでユーザーから価値を得る方法は?

ベストアンサー1

コマンドラインの末尾に指定された引数は通常、スクリプトが読み取るファイル名awkとして扱われます。awkコマンドラインで変数を設定するには-v variable=valueを使用します。

awk -v num=10 -f script.awk

これにより、numスクリプト内の変数として使用できます。上記の例では、変数の初期値は10です。

ENVIRON["variable"]スクリプトで読み取り環境変数を使用するか(名前付き環境変数の場合variable)、コマンドライン引数を表示することもできます。ここでは正の整数ですARGV[n]n


$1in を使用すると、awk現在のレコードの最初のフィールド値を参照しますが、ブロック内で使用するため、まだファイルBEGINからデータを読み取っていません。

コードの数は算術コンテキストで使用される空の変数なので、ゼロと解釈されます。

おすすめ記事