シェルスクリプト演算子

シェルスクリプトの比較演算子

数値比較

変数などを数値として比較評価する場合に使用します。

数値1 -gt 数値2 数値1が数値2より大きい場合に真
数値1 -lt 数値2 数値1が数値2より小さい場合に真
数値1 -ge 数値2 数値1が数値2より大きいか等しい場合に真
数値1 -le 数値2 数値1が数値2より小さいか等しい場合に真
数値1 -eq 数値2 数値1と数値2が等しい場合に真
数値1 -ne 数値2 数値1と数値2が等しくない場合に真

文字列比較

変数などを文字列として比較評価する場合に使用します。

文字列 文字列の長さが0より大きければ真
-n 文字列 文字列の長さが0より大きければ真
! 文字列 文字列の長さが0であれば真
-z 文字列 文字列の長さが0であれば真
文字列1 = 文字列2 2つの文字列が等しければ真
文字列1 != 文字列2 2つの文字列が等しくなければ真

論理結合

複数の条件を結合(AND,OR)して評価する場合に使用します。

! 条件 条件が偽であれば真
条件1 -a 条件2 条件1が真、かつ、条件2が真であれば真
条件1 -o 条件2 条件1が真、または、条件2が真であれば真

シェルスクリプトの四則演算

シェルスクリプトで数値演算を行う場合は、「expr」コマンドを使用します。

シェルスクリプトでは、「VAR=1+1」と記述しても変数には「"1+1"」という文字列が格納されることになります。

「expr」コマンドで使用できる算術演算子は以下のとおりです。

a + b aとbの和
a - b aとbの差
a \* b aとbの積
a / b aとbの商
a % b aとbの剰余

  • 乗算の演算子はエスケープ文字を使用して「\*」と記述します。
    • UNIXにおいて「*」はワイルドカードという特別な意味があります。
  • 演算子の前後のスペースは省略できませんので注意してください。

実行例


#!/bin/sh
var1=`expr 1 + 1`
var2=`expr 2 - 1`
var3=`expr $var1 \* $var2`

ファイル演算子

ファイルの存在、形式、パーミッションなどで評価する場合に使用します。

testコマンドを利用することと同等の処理を行います。


-d ファイル名 ディレクトリなら真
-f ファイル名 通常ファイルなら真
-L ファイル名 シンボリックリンクなら真
-s ファイル名 サイズが0より大きければ真
-r ファイル名 読み取り可能ファイルなら真
-w ファイル名 書き込み可能ファイルなら真
-x ファイル名 実行可能ファイルなら真
ファイル1 -nt ファイル2 ファイル1がファイル2よりタイムスタンプが新しければ真
ファイル1 -ot ファイル2 ファイル1がファイル2よりタイムスタンプが古ければ真

関連ページ