Shell-演算子


ここでは、Shell演算子について説明します.
Shellは他のプログラミング言語と同様に、次のような演算子をサポートします.
演算子リレーショナル演算子ブール演算子論理演算子文字列演算子ファイルテスト演算子原生bashは簡単な数学演算をサポートしていませんが、awkやexpr、exprなどの他のコマンドで実現できます.
exprは、式の評価操作を完了するための式計算ツールです.
単純な例:
2つの数を加算します(単一引用符ではなく逆引用符`を使用することに注意してください):
#!/bin/bash

val=`expr 2 + 2`
echo "      : $val"

スクリプトを実行し、次のように出力します.
      : 4

次の点に注意してください.
式と演算子の間にスペースが必要です.たとえば、2+2は間違っています.2+2と書く必要があります.これは、私たちがよく知っているプログラミング言語の多くとは異なります.
完全な式は``に含まれます.この文字はよく使われる単一引用符ではなく、Escキーの下にあることに注意してください.
一、算術演算子
次の表に、変数aが10、変数bが20であると仮定した一般的な演算子を示します.
演算子
説明
例を挙げる
+
加算
`expr$a+$b`の結果は 30.
-
減算
`expr$a-$b`の結果は-10であった.
*
乗算#ジョウサン#
`expr$a*$b`結果は 200.
/
除算
`expr$b/$a`の結果は 2.
%
余剰を取る
`expr$b%$a`の結果は 0.
=
に値を付ける
a=$bは変数bの値をaに与える.
==
等しい.2つの数値を比較するために使用され、同じ場合はtrueを返します.
[$a=$b]戻り false.
!=
等しくない.2つの数値を比較するために使用され、異なる場合はtrueを返します.
[$a!=$b]はtrueを返します.
注:条件式は括弧で囲まれ、スペースを指定します.たとえば、次のようになります. [$a==$b] 間違いです.書かなければなりません. [ $a == $b ].
乗算を実行するには、乗算記号(*)の前に反スラッシュ()を付けなければなりません.
MACにおけるshellのexpr構文は$((式))であり、ここで式の「*」にはエスケープ記号「」は必要ない.
二、関係演算子
リレーショナル演算子は数値のみをサポート
次の表に、変数aが10、変数bが20であると仮定した一般的な関係演算子を示します.
演算子
説明
例を挙げる
-eq
2つの数が等しいかどうかを検出し、等しいかどうかをtrueに返します.
[$a-eq$b]戻り false.
-ne
2つの数が等しいかどうかを検出し、等しくない場合はtrueを返します.
[$a-ne$b]はtrueを返します.
-gt
左の数が右より大きいかどうかを検出し、そうであればtrueを返します.
[$a-gt$b]はfalseを返します.
-lt
左の数が右より小さいかどうかを検出し、そうであればtrueを返します.
[$a-lt$b]はtrueを返します.
-ge
左の数が右の数より大きいかどうかを検出し、そうであればtrueを返します.
[$a-ge$b]はfalseを返します.
-le
左の数が右の数より小さいかどうかを検出し、そうであればtrueを返します.
[$a-le$b]はtrueを返します.
三、ブール演算子
次の表に、変数aが10、変数bが20であると仮定した一般的なブール演算子を示します.
演算子
説明
例を挙げる
!
非演算、式trueはfalseを返し、そうでなければtrueを返します.
[!false]はtrueを返します.
-o
または、trueという式がある場合はtrueを返します.
[$a-lt 20-o$b-gt 100]戻り true.
-a
演算とともに、両方の式がtrueである場合にtrueが返されます.
[$a-lt 20-a$b-gt 100]戻り false.

四、論理演算子
次の表はShellの論理演算子を紹介し、変数aが10、変数bが20であると仮定する.
演算子
説明
例を挙げる
&&
ロジックのAND
[$a-lt 100&&$b-gt 100]]falseを返す
||
ロジックのOR
[$a-lt 100|$b-gt 100]]はtrueを返します.
注意:二重かっこを使用する[]]
五、文字列演算子
次の表に、変数aがabcであり、変数bがefgであると仮定した一般的な文字列演算子を示します.
演算子
説明
例を挙げる
=
2つの文字列が等しいかどうかを検出し、等しいかどうかをtrueに返します.
[$a=$b]はfalseを返します.
!=
2つの文字列が等しいかどうかを検出し、等しくない場合はtrueを返します.
[$a!=$b]戻り true.
-z
文字列の長さが0であるかどうかを検出し、0でtrueを返します.
[-z$a]はfalseを返します.
-n
文字列の長さが0であるかどうかを検出し、0ではtrueを返さない.
[-n$a]はtrueを返します.
str
文字列が空であるかどうかを検出し、空でない場合はtrueを返します.
[$a]戻り true.
六、ファイルテスト演算子
ファイルテスト演算子は、Unixファイルのさまざまなプロパティを検出するために使用されます.
変数fileがファイル「/var/www/runoob/test.sh」を表すと仮定し、そのサイズは100バイトでrwx権限を持つ
オペレータ
説明
例を挙げる
-b file
ファイルがブロックデバイスファイルであるかどうかを検出し、そうであればtrueを返します.
[-b$file]はfalseを返します.
-c file
ファイルが文字デバイスファイルであるかどうかを検出し、そうであればtrueを返します.
[-c$file]戻り false.
-d file
ファイルがディレクトリであるかどうかを検出し、そうであればtrueを返します.
[-d$file]はfalseを返します.
-f file
ファイルが通常のファイル(ディレクトリでもデバイスファイルでもない)であるかどうかを検出し、そうであればtrueを返します.
[-f$file]戻り true.
-g file
ファイルにSGIDビットが設定されているかどうかを検出し、そうであればtrueを返します.
[-g$file]戻り false.
-k file
ファイルにスティッキービット(Sticky Bit)が設定されているかどうかを検出し、そうであればtrueを返します.
[-k$file]戻り false.
-p file
ファイルが有名なパイプであるかどうかを検出し、そうであればtrueを返します.
[-p$file]戻り false.
-u file
ファイルにSUIDビットが設定されているかどうかを検出し、そうであればtrueを返します.
[-u$file]戻り false.
-r file
ファイルが読み取り可能かどうかを検出し、そうであればtrueを返します.
[-r$file]戻り true.
-w file
ファイルが書き込み可能かどうかを検出し、そうであればtrueを返します.
[-w$file]戻り true.
-x file
ファイルが実行可能かどうかを検出し、そうであればtrueを返します.
[-x$file]戻り true.
-s file
ファイルが空(ファイルサイズが0より大きいかどうか)であるかどうかを検出し、空ではなくtrueを返します.
[-s$file]戻り true.
-e file
ディレクトリを含むファイルが存在するかどうかを検出し、そうであればtrueを返します.
[-e$file]戻り true.
コードの海を一緒に泳ぎましょう!