(1) 概要
シェルは、他のプログラミング言語と同様に、次のようなさまざまな演算子をサポートしています。
- 算術演算子
- 関係演算子
- ブール演算子
- 文字列演算子
- ファイルテストオペレーター
ネイティブ bash は単純な数学演算をサポートしていませんが、awk や expr などの他のコマンドを通じて実現できます。expr が最も一般的に使用されます。 expr は、式を評価するために使用できる式計算ツールです。詳細については、以下を参照してください。
(2) 算術演算子
算術演算子
次の表は、変数 a が 60、変数 b が 20 であると仮定して、一般的に使用される算術演算子のリストです。
オペレーター | 説明する | 例 |
---|---|---|
+ | 追加 | `expr $a + $b` の結果は 70 になります。 |
- | 引き算 | `expr $a - $b` の結果は 40 になります。 |
* | 乗算 | `expr $a \* $b` の結果は 1200 になります。 |
/ | 分割 | `expr $b / $a` の結果は 3 になります。 |
% | 残りを取る | `expr $b % $a` の結果は 0 になります。 |
= | 割り当て | a=$b は、変数 b の値を a に代入します。 |
== | 等しい。 2 つの数値を比較し、それらが同じ場合に true を返すために使用されます。 | [ $a == $b ] は false を返します。 |
!= | 等しくありません。 2 つの数値を比較し、それらが同じでない場合に true を返すために使用されます。 | [ $a != $b ] は true を返します。 |
注: 条件式は角括弧で囲み、スペースを入れる必要があります。例: [$a==$b ] は誤りであるため、 [ $a == $b ] と記述する必要があります。
知らせ:
知らせ:
- 乗算を実行するには、乗算記号 (*) の前にバックスラッシュ (\) を付ける必要があります。
- MAC のシェルの expr 構文は次のとおりです:$((expression))、ここで式の「*」は ; いいえエスケープ記号「\」が必要です
結果を示す:
コード:
#!/bin/bash
a=60
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
(3) 関係演算子
関係演算子は、文字列の値が数値でない限り、数値のみをサポートし、文字列はサポートしません。
次の表は、変数 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 を返します。 |
文章:
#!/bin/bash
a=10
b=if [ "$a" -eq "$b" ]; then
echo "$a -eq $b : a は b に等しい"
else
echo "$a -eq" $b : a は b に等しくない"
fiif [ "$a" -ne "$b" ]; then
echo "$a -ne $b : a は b に等しくない"
else
echo "$a - ne $b : a イコール b"
fiif [ "$a" -gt "$b" ]; then
echo "$a -gt $b : a より b"
else
echo "$a -gt" $b : a は b より大きくありません"
fiif [ "$a" -lt "$b" ]; then
echo "$a -lt $b : a 小以下 b"
else
echo "$a -lt $b : a は b より小さい"
fiif [ "$a" -ge "$b" ]; then
echo "$a -ge $b : a より大きいか等より b"
else
echo "$a -ge $b : a 小以下 b"
fiif [ "$a" -le "$b" ]; then
echo "$a -le $b : a 小以下または同等 b"
else
echo "$a -le $b : a 大より b"
fi
(4) ブール演算子
次の表は、変数 a が 10、変数 b が 20 であると仮定して、一般的に使用されるブール演算子のリストです。
オペレーター | 説明する | 例 |
---|---|---|
! | 非操作。式が true の場合は false を返し、それ以外の場合は true を返します。 | [ ! false ] true を返します。 |
-O | または演算。1 つの式が true の場合に true を返します。 | [ $a -lt 20 -o $b -gt 100 ] は true を返します。 |
-a | AND 演算は、両方の式が true の場合にのみ true を返します。 | [ $a -lt 20 -a $b -gt 100 ] は false を返します。 |
注: ブール演算子を有効にするには、[] 内に配置するか、テスト コマンドとともに使用する必要があります。
(5) 文字列演算子
次の表は、変数 a が「abc」、変数 b が「abg」であると仮定して、一般的に使用される文字列演算子をリストしています。
オペレーター | 説明する | 例 |
---|---|---|
=(または== | 2 つの文字列が等しいかどうかを確認し、等しい場合は true を返します。 | [ $a = $b ] は false を返します。 |
!= | 2 つの文字列が等しくないかどうかを確認し、等しくない場合は true を返します。 | [ $a != $b ] は true を返します。 |
-と | 文字列の長さが 0 かどうかを確認し、0 の場合は true を返します。 | [ -z $a ] は false を返します。 |
-n | 文字列の長さが 0 でないことを確認し、0 でない場合は true を返します。 | [ -n "$a" ] は true を返します。 |
$ | 文字列が空でないかどうかを確認し、空でない場合は true を返します。 | [ $a ] は true を返します。 |
(6) ファイルテストオペレータ
ファイル テスト オペレーターは、Unix ファイルのさまざまなプロパティを検出するために使用されます。
プロパティの検出は次のように説明されます。
オペレーター | 説明する | 例 |
---|---|---|
-b ファイル | ファイルがブロック デバイス ファイルかどうかを確認し、ブロック デバイス ファイルである場合は true を返します。 | [ -b $file ] は false を返します。 |
-c ファイル | ファイルがキャラクタ デバイス ファイルかどうかを確認し、キャラクタ デバイス ファイルである場合は true を返します。 | [ -c $file ] は false を返します。 |
-d ファイル | ファイルがディレクトリであるかどうかを確認し、ディレクトリである場合は true を返します。 | [ -d $file ] は false を返します。 |
-f ファイル | ファイルが通常のファイル (ディレクトリでもデバイス ファイルでもない) かどうかを確認し、そうであれば true を返します。 | [ -f $file ] は true を返します。 |
-g ファイル | ファイルに SGID ビットが設定されているかどうかを確認し、設定されている場合は true を返します。 | [ -g $file ] は false を返します。 |
-k ファイル | ファイルにスティッキー ビットが設定されているかどうかを確認し (Sticky Bit)、そうであれば true を返します。 | [ -k $file ] は false を返します。 |
-p ファイル | ファイルが名前付きパイプかどうかを確認し、そうであれば true を返します。 | [ -p $file ] は false を返します。 |
-u ファイル | ファイルに SUID ビットが設定されているかどうかを確認し、設定されている場合は true を返します。 | [ -u $file ] 返回 false。 |
-r ファイル | ファイルが読み取り可能かどうかを確認し、読み取り可能であれば true を返します。 | [ -r $file ] は true を返します。 |
-wファイル | ファイルが書き込み可能かどうかを確認し、書き込み可能であれば true を返します。 | [ -w $file ] は true を返します。 |
-xファイル | ファイルが実行可能かどうかを確認し、実行可能であれば true を返します。 | [ -x $file ] は true を返します。 |
-sファイル | ファイルが空かどうか(ファイルサイズが0より大きいかどうか)を確認し、空でない場合はtrueを返します。 | [ -s $file ] は true を返します。 |
-e ファイル | ファイル (ディレクトリを含む) が存在するかどうかを確認し、存在する場合は true を返します。 | [ -e $file ] は true を返します。 |
その他のチェッカー:
- -S: ファイルがソケットかどうかを判断します。
- -L: ファイルが存在し、シンボリック リンクであるかどうかを確認します
#!/bin/bash
ファイル="/var/www/runoob/test.sh"
if [ -r "$file" ]; then
echo "ファイル読み取り可能"
else
echo 「ファイルを読み取ることができません」
fiif [ -w "$file" ]; then
echo "書き込み可能なファイル"
else
echo 「ファイルに書き込めません」
fiif [ -x "$file" ]; then
echo "実行可能ファイル"
else
echo 「ファイルは実行可能ではありません」
fiif [ -f "$file" ]; then
echo "このファイルは通常のファイルです"
else < a i=3> echo "このファイルは特殊なファイルです" fiif [ -d "$file" ]; then
echo "ファイルはディレクトリです"
else< a i =3> echo 「ファイルはディレクトリではありません」 fiif [ -s "$file" ]; then
echo "ファイルは空ではありません"
else< a i=3> echo 「ファイルは空です」 fiif [ -e "$file" ]; then
echo "ファイルが存在します"
else
echo 「ファイルが存在しません」
fi
(7) 論理演算子
以下は、変数 a が 10、変数 b が 20 であると仮定して、Shell の論理演算子を紹介します。
オペレーター | 説明する | 例 |
---|---|---|
&& | 論理積 | [[ $a -lt 100 && $b -gt 100 ]] は false を返します |
|| | 論理和 | [[ $a -lt 100 || $b -gt 100 ]] は true を返します |