[ ] [ ] [ ] [ トップページ ] [ 目次 ] [ ファイル/ディレクトリのモード設定方法 ] [ 正規表現 ] [ 基本的なコマンド ] [ シグナル ] [ Bashリファレンス ] [ Viリファレンス ]  
[ コマンド行入力編集 ] [ 展開/置換 ] [ リディレクション ] [ 制御構造 ] [ 式と演算 ] [ 組込みコマンド ] [ ヒストリ ] [ ジョブ制御 ] [ シェル変数 ] [ setコマンド ] [ その他 ]
[ 式の使用例 ]

式と演算

Bシェルスタイルの条件式

通常の条件式 使用例
! expr
exprの論理否定となる。つまり,exprがflaseならtrue。
( expr )
exprの値を返す。(2.2)
expr1 -a expr2
expr1とexpr2との論理積(AND)。
expr1 -o expr2
expr1とexpr2との論理和(OR)。
区切り文字で区切られたワードの数によって次のようにして式を評価する。
ワードが0個 式はfalse
ワードが1個 ワードがnullでなければtrue
ワードが2個 最初のワードが単項演算子(!,-f,-dなど)であれば,その演算を行い結果が式の結果。そうでなければ式はfalse。
ワードが3個 2番目のワードが比較演算子だったら,その結果が式の結果となる。最初のワードが!だったら,2番目と3番目のワードの演算結果を論理否定したものとなる。最初と3番目が'('と')'だったら,2番目のワードの評価結果が式の値となる。
ワードが4個 最初が!だったら,2〜4番目の評価結果を論理否定したものが式の結果となる。!以外だったら,上の例と同様に結果を求める。
ワードが5個以上  上の例と同様。

Bashの条件式

ファイルの存在
-a file

fileが存在すればtrue

-b file
fileが存在し,それがブロックのスペシャルファイルだったらtrue
-c file
fileが存在し,それがキャラクタのスペシャルファイルだったらtrue
-d file
fileが存在し,それがディレクトリだったらtrue
-e file
fileが存在すればtrue
-f file
fileが存在し,それが通常のファイルだったらtrue
-g file
fileが存在し,そのset-group-idビットがセットされていたらtrue
-k file
fileが存在し,そのstickyビットがセットされていたらtrue
-p file
fileが存在し,それがnamed pipeだったらtrue
-r file
fileが存在し,それが読み込み可能ならtrue
-s file
fileが存在し,そのサイズが0より大きかったらtrue
-t fd
ファイルディスクリプタfdがオープンされており,それが端末を参照していたらtrue
-u file
fileが存在し,そのset-user-idビットがセットされていたらtrue
-w file
fileが存在し,それが書き込み可能ならtrue
-x file
fileが存在し,それが実行可能ならtrue
-O file
fileが存在し,それが実行中のユーザが所有するものだったらtrue
-G file
fileが存在し,それが実行中のユーザグループが所有するものだったらtrue
-L file
fileが存在し,それがシンボリックリンクならtrue
-S file
fileが存在し,それがSocketならtrue
-N file
fileが存在し,それが最後に読み込んだ後更新されていたらtrue
ファイル
file1 -nt file2
file1の更新日時がfile2より新しかったらtrue
file1 -ot file2
file1の更新日時がfile2より古かったらtrue
file1 -ef file2
file1とfile2が同じ装置でi-nodeも同じならtrue
シェルオプション
-o optname
optnameのシェルオプションが有効ならtrue
文字列などの比較
-z string
stringの長さが0ならtrue
-n string
string
stringの長さが0じゃなければtrue
string1 == string2
string1とstring2が等しければtrue
string1 != string2
string1とstring2が等しくなければtrue
string1 < string2
ソート順に並べたときにstring1がstring2より前に位置すればtrue
string1 > string2
ソート順に並べたときにstring1がstring2より後に位置すればtrue
arg1 OP arg2
arg1とarg2は数値。OPは'-eq','-ne','-lt','-le','-gt','-ge'のうちのどれか。
OPはそれぞれ,=,!=,<,<=,>,>=を表す。

演算子

+   

単項演算子としてのプラス

-   

単項演算子としてのマイナス

!  

論理否定

~   

ビット演算の否定

**

階乗

*

乗算

/

除算

%

剰余

+

加算

-

減算

<<

左シフト(ビット演算)

>>

右シフト(ビット演算)

<=

小または等しい

>=
大または等しい
<

小さい

>

大きい

==

等しい

!=

等しくない

&

ビット演算のAND

^

ビット演算のExclusive OR

|

ビット演算のOR

&&

論理演算のAND

||

論理演算のOR

expr ? expr : expr
=

代入

*=

右項を乗算した結果を代入

/=

右項で除算した結果を代入

%=

右項で剰余演算の結果を代入

+=

右項を加算した結果を代入

-=

右項を減算した結果を代入

<<=

右項でシフト演算した結果を代入

>>=

右項でシフト演算した結果を代入

&=

右項でビット演算した結果を代入

^=

右項でビット演算した結果を代入

|=

右項でビット演算した結果を代入

 

  
WB00806_.gif (471 バイト)
Copyright(C) 1997-1999 GlassCom
webmaster@glasscom.com