Go to the first, previous, next, last section, table of contents.

if

if-else文はawkの意思決定文です。これは次のような形式をとります。

if (condition) then-body [else else-body]

conditionは、この文の残りのどれを実行するかを制御する式です。conditionが真の場合、then-bodyが実行されます。偽の場合は、else-bodyが実行されます(else節がある場合)。この文のelseの部分は省略できます。条件は、値が0またはヌル文字列の場合は偽、それ以外の場合は真と解釈されます。

次に例を示します。

if (x % 2 == 0)
    print "x is even"
else
    print "x is odd"

この例では、式x % 2 == 0が真の場合(つまり、xの値が2で割れる場合)、最初のprint文が実行されます。偽の場合は、2番目のprint文が実行されます。

elsethen-bodyと同じ行にあり、かつthen-bodyが複合文でない場合(つまりカーリーブレースで囲まれていない場合)、then-bodyelseはセミコロンで区切らなければなりません。これを説明するために、上の例を書き直してみましょう。

awk '{ if (x % 2 == 0) print "x is even"; else
        print "x is odd" }'

`;'を付け忘れると、awkはこの文をパーシングできないので、構文エラーになります。

実際は、このような書き方はしない方が良いでしょう。なぜなら、elseがその行の一番最初にない場合、人間は見落としてしまう可能性があるからです。


Go to the first, previous, next, last section, table of contents.