2010年8月11日水曜日

論理演算子の使われ方について

bashでも論理演算子の意味はC言語と同じ
けどシェルスクリプト内で変わった使われ方をしている部分を発見したので調べてみた

◆使われ方が独特な個所
[ -z "${COLUMNS:-}" ] && COLUMNS=80

普通、ANDやORは条件式で使われるのだが、if文がないけど
これいかに??


シェルスクリプトではこうゆう書き方が使われるようで
ある条件(左辺式)が成功(true:真)したら、別の条件(右辺式)を実行する
とゆう場合に使われるらしい

ANDの場合、左辺の条件式を先に判断し失敗(false:偽)だった場合、右辺は評価しない
なので上記の例だと

COLUMNSがnullだった場合、COLUMNSに80をセットする

という意味になる。

また、ORも同じような感じで使われるようで
左辺式が失敗(false:偽)した場合、右辺式を実行する
という感じで使われる。

例えば、あるファイルが存在していない場合、スクリプトを終了する場合など
[ -f "とあるファイル" ] || exit 0



ま、C言語に慣れた人だとifを使えよ!!
と言いたくなる書き方だけどね

0 件のコメント:

コメントを投稿