シェルの基本的な演算子
シェルと他のプログラミング言語は、を含め、事業者の様々なサポートしています。
- 算術演算子
- 関係演算子
- ブール演算子
- 文字列演算子
- ファイルテスト演算子
ネイティブbashは簡単な数学演算をサポートしていませんが、最も一般的に使用される式expr、などのawkやexprのような他のコマンドによって達成することができます。
exprは式評価の操作を完了するためにそれを使用し、式計算ツールです。
たとえば 、二つの数字( `抗引用符の代わりに一重引用符'を使用することに注意してください)を追加します
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
次のようにスクリプトを実行し、出力は次のようになります。
两数之和为 : 4
次の2点にご留意ください
- 式と演算子の間にスペースを持っている必要があり、例えば、2 + 2が間違っている、あなたは私たちが多くのプログラミング言語に精通している2 + 2を、書かなければなりません同じではありません。
- ``、含有させる完全な式は、この文字は、一般的には、Escキー下の単一引用符で使用されていないことに注意してください。
算術演算子
次の表は、10変数を想定し、一般的な算術演算子を示し、変数bが20であります:
演算子 | 説明 | 例 |
---|---|---|
+ | 追加 | `Exprに$ A + $ B`結果は30です。 |
- | 引き算 | `exprが$ - $ B`結果は-10です。 |
* | 乗算 | `exprは200のための\ * $のB`結果を$。 |
/ | 除算 | `Exprに$ B / $のA`結果は2です。 |
% | 残り | `Exprに$ bは%$のA`結果は0です。 |
= | 割り当て | = $ bの変数bがの値を代入します。 |
== | 均等。 二つの数字、真の同じリターンを比較するために使用されます。 | [$ ==の$ bは] falseを返します。 |
!= | 等しくありません。 2つの数値を比較するために使用する真の同じリターンではありません。 | [$ A!= $ Bは] trueを返します。 |
条件式は、角括弧の間に置かれるべきである、とスペースを含む、例えば: 注:[$==の$ bの]間違っていると[$ ==ます$ B]のように記述する必要があります。
例
次のように算術演算子の例を示します。
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 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
次のようにスクリプトを実行し、出力は次のようになります。
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
注意:
- 乗算記号(*)は乗算を達成するために、バックスラッシュ(\)の前に追加する必要があります。
- ...その後... Fiあり条件文である場合、フォローアップがカバーされます。
- exprの構文のMACシェルである:$((式))、式は「*」記号をエスケープする必要がある場所"\。"
関係演算子
関係演算子はデジタルのみサポートしている文字列の値が数値でない限り、文字列をサポートしていません。
次の表は、10変数を仮定すると、変数bが20である、一般的に使用される関係演算子を示しています。
演算子 | 説明 | 例 |
---|---|---|
-eq | 2つの数値が真と等しい、等しく戻っているかどうかを検出します。 | [$ -eqの$ bは] falseを返します。 |
-ne | 2つの数値が等しいかどうかを検出し、真実ではないに等しい戻ります。 | [$ -ne $ bは] trueを返します。 |
-gt | 左は右に検出数を超えて、そうだとすれば、それはtrueを返します。 | [$ -gt $ bは] falseを返します。 |
-lt | 数検出は、左の右未満であり、もしそうであれば、それはtrueを返します。 | [$ -lt $ bは] trueを返します。 |
-ge | 数が多いの左側の右側に等しく、そうであれば、それはtrueを返します。かどうかを検出 | [$ -ge $ bは] falseを返します。 |
-le | 左へ右へ以下の検出数かどうか、それがある場合、それはtrueを返します。 | [$ -le $ bは] trueを返します。 |
例
次のように関係演算子の例を示します。
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 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
次のようにスクリプトを実行し、出力は次のようになります。
10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b
ブール演算子
次の表は、10変数を想定し、一般的に使用されるブール演算子を示し、変数bが20であります:
演算子 | 説明 | 例 |
---|---|---|
! | 非動作、式がそれ以外の場合はtrueを返し、trueを返しますfalseです。 | [!偽]はtrueを返します。 |
-o | OR演算、真の式がtrueを返すがあります。 | [$ Aが100 -gt 20 -oの$ bを-lt] trueを返します。 |
-a | および操作は、2つの式がtrueを返す前に真です。 | falseを返す[$ Aは、-gt 100 20の-a $ bを-lt]。 |
例
次のようにブール演算子の例を示します。
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi
次のようにスクリプトを実行し、出力は次のようになります。
10 != 20 : a 不等于 b 10 -lt 100 -a 20 -gt 15 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 false
論理演算子
以下は、論理演算子シェルを説明し、10変数を仮定して、変数bが20であります:
演算子 | 説明 | 例 |
---|---|---|
&& | 論理積 | [[$ Aは100 -lt && $ -gt 100] B]はfalseを返します |
|| | 論理OR | trueを返します[[$ Aは、100] -gt 100 || $ bを-lt] |
例
次のように論理演算子の例としては、次のとおりです。
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
次のようにスクリプトを実行し、出力は次のようになります。
返回 false 返回 true
文字列演算子
変数として「ABC」を想定し、次の表に一般的に使用される文字列演算子、変数bが「EFG」です。
演算子 | 説明 | 例 |
---|---|---|
= | 2つの文字列を検出することは、真等しく、同等のリターンです。 | [$のA = $ bは] falseを返します。 |
!= | 2つの文字列が等しいかどうかを検出し、真実ではないに等しい戻ります。 | [$ A!= $ Bは] trueを返します。 |
-z | 文字列の長さが0の場合は0を返し、真であるか否かを検出します。 | [-z $ A] falseを返します。 |
-n | 文字列の長さは、非ゼロ復帰真0であるか否かを検出します。 | [-n $ A] trueを返します。 |
STR | 文字列が空であるかどうかを検出し、ない空の戻り真。 | [$ A]はtrueを返します。 |
例
次のように文字列演算子の例を示します。
#!/bin/bash # author:本教程 # url:www.w3big.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n $a ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi
次のようにスクリプトを実行し、出力は次のようになります。
abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空
ファイルテスト演算子
ファイルテストオペレータは、UNIXファイル属性の多様を検出するために使用されます。
次のように属性の検出について説明します。
演算子 | 説明 | 例 |
---|---|---|
-bファイル | ファイルはブロックデバイスファイルであり、もしそうなら、それはtrueを返すかどうかを検出します。 | [-b $ファイル]はfalseを返します。 |
-cファイル | ファイルはキャラクタデバイスファイルであり、もしそうなら、それはtrueを返すかどうかを検出します。 | [-c $ファイル]はfalseを返します。 |
-dファイル | ファイルかどうかを検出すると、ディレクトリで、そうだとすれば、それはtrueを返します。 | [-d $ファイル]はfalseを返します。 |
-fファイル | ファイルが通常のファイル(どちらもディレクトリまたはデバイス・ファイル)であり、もしそうなら、それはtrueを返すかどうかを検出します。 | [-f $ファイル]はtrueを返します。 |
-gファイル | ファイルかどうかを検出することSGIDビットを持っており、もしそうなら、それはtrueを返します。 | [-g $ファイル]はfalseを返します。 |
-kファイル | ファイルはスティッキービット(スティッキービット)を持っているかどうかを検出し、もしそうなら、それはtrueを返します。 | [-k $ファイル]はfalseを返します。 |
-pファイル | ファイルかどうかを検出することは、名前付きパイプであり、もしそうであれば、それはtrueを返します。 | [-p $ファイル]はfalseを返します。 |
-uファイル | ファイルかどうかを検出することはSUIDビットを持っており、もしそうなら、それはtrueを返します。 | [-u $ファイル]はfalseを返します。 |
-rファイル | これは、ファイルが読み込み可能かどうかを検出し、もしそうなら、それはtrueを返します。 | [-r $ファイル]はtrueを返します。 |
-wファイル | ファイルを書き込むことができるかどうかを検出し、もしそうなら、それはtrueを返します。 | [-w $ファイル]はtrueを返します。 |
-xファイル | ファイルが実行可能であるかどうかを検出し、もしそうなら、それはtrueを返します。 | [-x $ファイル]はtrueを返します。 |
-sファイル | 真の空のリターンは、(ファイルサイズが0より大きい場合)、ファイルが空であるかどうかではない検出します。 | [-s $ファイル]はtrueを返します。 |
-eファイル | (ディレクトリを含む)のファイルが存在を検出し、もしそうであれば、それはtrueを返します。 | [-e $ファイル]はtrueを返します。 |
例
変数ファイルは、そのサイズはrwxの権限で、100バイトで、ファイル「/var/www/w3big/test.sh」を示しています。 次のコードは、ファイルのさまざまな属性を検出します。#!/bin/bash # author:本教程 # url:www.w3big.com file="/var/www/w3big/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 echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个目录" else echo "文件不是个目录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi
次のようにスクリプトを実行し、出力は次のようになります。
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在