Unix-basic-operators

提供:Dev Guides
移動先:案内検索

Unix/Linux-シェルの基本的な演算子

各シェルではさまざまな演算子がサポートされています。 この章では、Bourneシェル(デフォルトシェル)について詳しく説明します。

私たちは今、次の演算子について説明します-

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

Bourneシェルにはもともと単純な算術演算を実行するメカニズムはありませんでしたが、 awk または expr のいずれかの外部プログラムを使用します。

次の例は、2つの数字を追加する方法を示しています-

#!/bin/sh

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

上記のスクリプトは、次の結果を生成します-

Total value : 4

追加しながら、次の点を考慮する必要があります-

  • 演算子と式の間にはスペースが必要です。 たとえば、2+ 2は正しくありません。 2+と書く必要があります。 2。
  • 完全な式は、バックティックと呼ばれる ’’ で囲む必要があります。

算術演算子

次の算術演算子は、Bourne Shellでサポートされています。

変数 a が10を保持し、変数 b が20を保持すると仮定します-

リンク:/unix/unix-arithmetic-operators [例を表示]

Operator Description Example
PLUS (Addition) Adds values on either side of the operator expr $a PLUS $b will give 30
- (Subtraction) Subtracts right hand operand from left hand operand expr $a - $b will give -10
* (Multiplication) Multiplies values on either side of the operator expr $a \* $b will give 200
/(Division) Divides left hand operand by right hand operand expr $b/$a will give 2
% (Modulus) Divides left hand operand by right hand operand and returns remainder expr $b % $a will give 0
= (Assignment) Assigns right operand in left operand a = $b would assign value of b into a
== (Equality) Compares two numbers, if both are same then returns true. [ $a == $b ] would return false.
!= (Not Equality) Compares two numbers, if both are different then returns true. [ $a != $b ] would return true.

すべての条件式は、スペースを含む角カッコ内にある必要があることを理解することが非常に重要です。たとえば、 [$ a == $ b] は正しいのに対し、 [$ a == $ b] は正しくありません。

すべての算術計算は長整数を使用して行われます。

関係演算子

Bourne Shellは、数値に固有の次の関係演算子をサポートしています。 これらの演算子は、値が数値でない限り、文字列値に対して機能しません。

たとえば、次の演算子は、10と20の間、および「10」と「20」の間の関係をチェックしますが、「10」と「20」の間ではありません。

変数 a が10を保持し、変数 b が20を保持すると仮定します-

リンク:/unix/unix-relational-operators [例を表示]

Operator Description Example
-eq Checks if the value of two operands are equal or not; if yes, then the condition becomes true. [ $a -eq $b ] is not true.
-ne Checks if the value of two operands are equal or not; if values are not equal, then the condition becomes true. [ $a -ne $b ] is true.
-gt Checks if the value of left operand is greater than the value of right operand; if yes, then the condition becomes true. [ $a -gt $b ] is not true.
-lt Checks if the value of left operand is less than the value of right operand; if yes, then the condition becomes true. [ $a -lt $b ] is true.
-ge Checks if the value of left operand is greater than or equal to the value of right operand; if yes, then the condition becomes true. [ $a -ge $b ] is not true.
-le Checks if the value of left operand is less than or equal to the value of right operand; if yes, then the condition becomes true. [ $a -le $b ] is true.

すべての条件式は、周囲にスペースがある角括弧内に配置する必要があることを理解することが非常に重要です。 たとえば、 [$ a ⇐ $ b] は正しいのに対し、 [$ a ⇐ $ b] は正しくありません。

ブール演算子

次のブール演算子は、Bourne Shellでサポートされています。

変数 a が10を保持し、変数 b が20を保持すると仮定します-

link:/unix/unix-boolean-operators [例を表示]

Operator Description Example
! This is logical negation. This inverts a true condition into false and vice versa. [ ! false ] is true.
*-o * This is logical* OR*. If one of the operands is true, then the condition becomes true. [ $a -lt 20 -o $b -gt 100 ] is true.
*-a * This is logical* AND*. If both the operands are true, then the condition becomes true otherwise false. [ $a -lt 20 -a $b -gt 100 ] is false.

文字列演算子

次の文字列演算子は、Bourne Shellでサポートされています。

変数 a が「abc」を保持し、変数 b が「efg」を保持すると仮定します-

link:/unix/unix-string-operators [例を表示]

Operator Description Example
= Checks if the value of two operands are equal or not; if yes, then the condition becomes true. [ $a = $b ] is not true.
!= Checks if the value of two operands are equal or not; if values are not equal then the condition becomes true. [ $a != $b ] is true.
-z Checks if the given string operand size is zero; if it is zero length, then it returns true. [ -z $a ] is not true.
-n Checks if the given string operand size is non-zero; if it is nonzero length, then it returns true. [ -n $a ] is not false.
*str * Checks if* str* is not the empty string; if it is empty, then it returns false. [ $a ] is not false.

ファイルテスト演算子

Unixファイルに関連付けられたさまざまなプロパティをテストするために使用できる演算子がいくつかあります。

変数 file には、サイズが100バイトで、 readwriteexecute のアクセス許可がある既存のファイル名「test」が含まれていると仮定します-

link:/unix/unix-file-operators [例を表示]

Operator Description Example
-b file Checks if file is a block special file; if yes, then the condition becomes true. [ -b $file ] is false.
-c file Checks if file is a character special file; if yes, then the condition becomes true. [ -c $file ] is false.
-d file Checks if file is a directory; if yes, then the condition becomes true. [ -d $file ] is not true.
-f file Checks if file is an ordinary file as opposed to a directory or special file; if yes, then the condition becomes true. [ -f $file ] is true.
-g file Checks if file has its set group ID (SGID) bit set; if yes, then the condition becomes true. [ -g $file ] is false.
-k file Checks if file has its sticky bit set; if yes, then the condition becomes true. [ -k $file ] is false.
-p file Checks if file is a named pipe; if yes, then the condition becomes true. [ -p $file ] is false.
-t file Checks if file descriptor is open and associated with a terminal; if yes, then the condition becomes true. [ -t $file ] is false.
-u file Checks if file has its Set User ID (SUID) bit set; if yes, then the condition becomes true. [ -u $file ] is false.
-r file Checks if file is readable; if yes, then the condition becomes true. [ -r $file ] is true.
-w file Checks if file is writable; if yes, then the condition becomes true. [ -w $file ] is true.
-x file Checks if file is executable; if yes, then the condition becomes true. [ -x $file ] is true.
-s file Checks if file has size greater than 0; if yes, then condition becomes true. [ -s $file ] is true.
-e file Checks if file exists; is true even if file is a directory but exists. [ -e $file ] is true.

Cシェル演算子

次のリンクは、Cシェルオペレーターに関する簡単なアイデアを提供します-

リンク:/unix/unix-c-shell-operators [Cシェルオペレーター]

Korn Shellオペレーター

リンクをたどると、Korn Shell Operatorsを理解できます-

リンク:/unix/unix-korn-shell-operators [Korn Shell Operators]