C言語風のスタイル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/12 05:34 UTC 版)
「C Shell」の記事における「C言語風のスタイル」の解説
Unixシステムはほとんど全体がCで書かれているため、C shell の第一の目標はスタイル上システム全体と一貫性のあるコマンド言語とすることだった。キーワード、括弧の利用、組み込みの式の文法、配列サポートなどは全てCの影響を強く受けている。 今ではC言語によく似た文法のスクリプト言語がいくつもあり、それらに比べればcshはそれほどC言語に似ているとは言えない。しかし80年代から90年代にかけて、特にAT&Tでスティーブン・ボーンが開発したshと比べたときの違いは著しいと見られていた。次の例は、C shell の演算子や構文のわかりやすさを示したものである。 Bourne shellC shell#!/bin/shif [ $days -gt 365 ]then echo This is over a year.fi #!/bin/cshif ( $days > 365 ) then echo This is over a year.endif shには式の文法が存在しない。角括弧で囲まれた条件式は、外部のtest(英語版)というプログラムで評価する必要がある。つまり、shのifコマンドは子プロセスを起動して引数を別のコマンドとして実行させる。その子プロセスが終了したときのリターンコードがゼロならthen節を探し(then節はifとは別の文だが、セミコロンをはさんで一行で書かれることが多い)、入れ子になったブロックを実行する。リターンコードがゼロ以外ならelse節を実行する。testプログラムを "test" と "[" の両方にハードリンクすることで、角括弧表記の利点が生まれ、testの機能があたかもshの一部であるかのような錯覚を与える。shで制御ブロックの終端にキーワードを逆に綴ったものを置くのは、ALGOL 68 のスタイルを踏襲したものである。 対照的にcshは自前で式を評価でき、高速である。可読性もよいと言われている。演算子や構文の多くはC言語のものをそのまま使っている。キーワードを逆に綴ることもなく、全体としてよりC言語に近いスタイルである。 次の例は、2の1乗から10乗までを計算するスクリプトを比較したものである。 Bourne shellC shell#!/bin/shi=2j=1while [ $j -le 10 ]do echo '2 **' $j = $i i=`expr $i '*' 2` j=`expr $j + 1`done #!/bin/cshset i = 2set j = 1while ( $j <= 10 ) echo '2 **' $j = $i @ i *= 2 @ j++end やはりshには式の文法が存在しないため、shのスクリプトはコマンド置換(英語版)とexprコマンドを使っている。C shell の @ 文(コマンド)は一種の駄洒落であり、"at-sign-ment" すなわち代入文を意味している。 最後の例は、switch文のスタイルの違いを示したものである。 Bourne shellC shell#!/bin/shfor i in d*do case $i in d?) echo $i is short ;; *) echo $i is long ;; esacdone #!/bin/cshforeach i ( d* ) switch ( $i ) case d?: echo $i is short breaksw default: echo $i is long endswend shのスクリプトでは、";;" で各ケースの終りを示す。通常は空文を許さないため、これはケースの終りを目立たせるためである。
※この「C言語風のスタイル」の解説は、「C Shell」の解説の一部です。
「C言語風のスタイル」を含む「C Shell」の記事については、「C Shell」の概要を参照ください。
- C言語風のスタイルのページへのリンク