Linux ------------------------シェルの基本演算子

(1) 概要

シェルは、他のプログラミング言語と同様に、次のようなさまざまな演算子をサポートしています。

  • 算術演算子
  • 関係演算子
  • ブール演算子
  • 文字列演算子
  • ファイルテストオペレーター

       ネイティブ bash は単純な数学演算をサポートしていませんが、awk や expr などの他のコマンドを通じて実現できます。expr が最も一般的に使用されます。 expr は、式を評価するために使用できる式計算ツールです。詳細については、以下を参照してください。

Linux————算術コマンド - CSDN ブログ

(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 に等しくない"
fi

if [ "$a" -ne "$b" ]; then
    echo "$a -ne $b : a は b に等しくない"
else
    echo "$a - ne $b : a イコール b"
fi

if [ "$a" -gt "$b" ]; then
    echo "$a -gt $b : a より b"
else
    echo "$a -gt" $b : a は b より大きくありません"
fi

if [ "$a" -lt "$b" ]; then
    echo "$a -lt $b : a 小以下 b"
else
    echo "$a -lt $b : a は b より小さい"
fi

if [ "$a" -ge "$b" ]; then
    echo "$a -ge $b : a より大きいか等より b"
else
    echo "$a -ge $b : a 小以下 b"
fi

if [ "$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 「ファイルを読み取ることができません」
fi

if [ -w "$file" ]; then
    echo "書き込み可能なファイル"
else
    echo 「ファイルに書き込めません」
fi

if [ -x "$file" ]; then
    echo "実行可能ファイル"
else
    echo 「ファイルは実行可能ではありません」
fi

if [ -f "$file" ]; then
    echo "このファイルは通常のファイルです"
else < a i=3> echo "このファイルは特殊なファイルです" fi

if [ -d "$file" ]; then
    echo "ファイルはディレクトリです"
else< a i =3> echo 「ファイルはディレクトリではありません」 fi

if [ -s "$file" ]; then
    echo "ファイルは空ではありません"
else< a i=3> echo 「ファイルは空です」 fi

if [ -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 を返します

 

おすすめ

転載: blog.csdn.net/qq_63976098/article/details/134153235