if 文には、2 種類の形式があり、一つは
if ( expr ) commandで、expr は式が入り、その値が真 (0 以外) ならコマンド command が実行されます。 この場合、command 部分には複数のコマンドは書けません。
もう一つは、
if ( expr ) thenという形式です。 この形式では、else if ブロックはいくつあっても構いませんし (なくても構いません)、else ブロックもなくても構いません。 各ブロックでは、複数のコマンド行を書くこともできますし、 もちろんその中にさらに if 文を書くことも可能です。
command
...
else if ( expr ) then
command
...
else
command
...
endif
while 文は、以下のような形式です。
while ( expr )C 言語の while 文と同様に、式 expr が真 (0 以外) である間、 while ブロックの end までのコマンドの実行を繰り返します。 C 言語でも使用する break 命令や、continue 命令も使えます。
command
...
end
foreach 文は、以下のような形式です。
foreach var ( str1 ... strn )これは、 まず後ろのかっこ内 (リスト) の先頭の値 str1 を変数 var に代入して end までの一連のコマンドを実行し、 次に 2 番目の値を var に代入して実行し、 それをリストの最後の値 strn まで繰り返します。 これは C 言語には直接対応するものはありませんが (for 文とは少し違います)、 ある種のループになっていて、 やはり break や continue が使用できます。
command
...
end
switch 文は以下のような形式です。
switch ( string )これは C 言語の switch 文とほぼ同様ですが、 string を文字列として label1, label2 等と比較し、 C 言語では各 case ブロックから抜け出すのに break を使いますが、 csh スクリプトの switch 文では breaksw を使い、 switch 文の終わりは endsw と書きます。
case label1:
command
...
breaksw
case label2:
command
...
breaksw
default:
command
...
breaksw
endsw
goto ジャンプ命令は、
goto labelのようにジャンプ先ラベル名を指定して書くだけです。 ジャンプ先ラベルは、
label:のように名前の後ろに : をつけて書いただけの行を 任意の位置に置きます。
exit は、単にそこでスクリプトを強制終了します。 引数をつけて
exit ( expr )とすることもできますが、あまり使用することはないと思います。
竹野茂治@新潟工科大学