yes by awk2010年11月25日 10時54分20秒

今度は yes を awk で実装する。yes は y を出力し続ける単純なプログラム。出力は while ループを使う。これは他の言語でも一般的に見る構文。

さて一つ困ったことがある。awk は基本的に各入力行に対して実行されるのだ。入力行が無い。そこで、入力処理が始まる前を示す特別な条件式 BEGIN がある。これを用いることで、入力無しの awk プログラムが書ける。BEGIN が条件式となる。

BEGIN で処理を開始する。while 分を無限ループにし、print で y を出力する。入力行に対する処理は無い。


% awk 'BEGIN{while(1)print "y"}'
y
y
y
y
^C
%

強制終了で止められる。

今回の要点。

  1. BEGIN 条件式
  2. while