シェルスクリプトの基本的な演算子
シェル は、プログラマーがコマンドを実行し、オペレーティングシステムと直接対話できるインターフェイスです。 シェルスクリプト シェルが実行できるコマンドを提供しています。
シェルには、これらの変数を操作するために使用される変数と演算子もあります。シェルスクリプトには5つの基本的な演算子があります。
- 算術演算子
- 関係演算子
- ブール演算子
- ビット演算子
- ファイルテスト演算子
算術演算子
シェルスクリプトの算術演算子は、一般的な算術/数学演算を実行するために使用されます。シェルスクリプトには7つの有効な算術演算子があります-
-
追加(+) 2つのオペランド(変数)を追加するために使用されます。
-
減算(-) シェルスクリプトで2つの変数(オペランド)を減算するために使用されます。
-
乗算(*) シェルスクリプトで2つの変数(オペランド)を乗算するために使用されます。
-
分割(/) シェルスクリプトで2つの変数(オペランド)を分割するために使用されます。
-
モジュラス(%) シェルスクリプトのオペランドの除算の余りを見つけるために使用されます。
-
インクリメント演算子(++) 演算子の現在の値に1を追加するために使用されます。
-
デクリメント演算子(-) 演算子の現在の値から1を引くために使用されます。
例
シェルスクリプトでの算術演算子の実装を示すには-
a = 32 b = 23 add = $((a + b)) echo sum of a and b is $add sub = $((a - b)) echo Subtraction of a and b is $sub mul = $((a * b)) echo product of a and b is $mul div = $((a / b)) echo division of a and b is $div mod = $((a % b)) echo remainder when a is divided b is $mod ((++a)) echo Increment operator when applied on "a" results into a = $a ((--b)) echo Decrement operator when applied on "b" results into b = $b>
出力
sum of a and b is 55 Subtraction of a and b is 9 product of a and b is 736 division of a and b is 1 remainder when a is divided b is 9 Increment operator when applied on a results into a = 33 Decrement operator when applied on b results into b = 24
関係演算子
シェルスクリプトの関係演算子は、オペランド間の関係を定義します。これらの戻り値は、演算子とオペランドに応じてtrueまたはfalseのいずれかになります。シェルスクリプトには6種類の有効な関係演算子があります-
-
==演算子 2つの演算子の値を等しくする演算子です。値が等しい場合はtrueを返し、そうでない場合はfalseを返します。
-
!=演算子 は、2つの演算子の値を等しくし、それらの不等式をチェックする演算子です。値が等しくない場合はtrueを返し、そうでない場合はfalseを返します。
-
<演算子 2つの演算子の値を比較するより小さい演算子です。最初のオペランドの値が秒よりも小さい場合、演算子はtrueを返し、それ以外の場合はfalseを返します。
-
<=演算子 2つの演算子の値を比較する演算子以下です。最初のオペランドの値が秒1以下の場合、演算子はtrueを返し、それ以外の場合はfalseを返します。
-
>オペレーター 2つの演算子の値を比較する演算子より大きいです。最初のオペランドの値が秒よりも大きい場合、演算子はtrueを返し、それ以外の場合はfalseを返します。
-
>=演算子 2つの演算子の値を比較する演算子以上です。最初のオペランドの値が秒1以上の場合、演算子はtrueを返し、それ以外の場合はfalseを返します。
例
a = 32 b = 67 if(( $a==$b )) then echo a is equal to b. else echo a is not equal to b. fi if(( $a!=$b )) then echo a is not equal to b. else echo a is equal to b. fi if(( $a<$b )) then echo a is less than b. else echo a is not less than b. fi if(( $a<=$b )) then echo a is less than or equal to b. else echo a is not less than or equal to b. fi if(( $a>$b )) then echo a is greater than b. else echo a is not greater than b. fi if(( $a>=$b )) then echo a is greater than or equal to b. else echo a is not greater than or equal to b. fi
出力
a is not equal to b. a is not equal to b. a is less than b. a is less than or equal to b. a is not greater than b. a is not greater than or equal to b.
ブール演算子
論理演算子とも呼ばれるブール演算子は、シェルスクリプトで論理演算を実行するために使用されます。シェルスクリプトには3種類の有効な論理演算子があります-
-
論理積(&&) そのブール値の論理ANDを計算します。両方のオペランドがtrueの場合はtrueを返し、それ以外の場合はfalseを返します。
-
論理OR(||) ブールオペランドの論理OR演算を計算します。両方のオペランドがfalseの場合はfalseを返し、それ以外の場合はtrueを返します。
-
論理が(!)と等しくない 渡された単一の演算子の否定を計算します。オペランドの値がtrueの場合、falseを返し、それ以外の場合はtrueを返します。
例
a = true b = false if(($a == "true" & $b == "true" )) then echo Both are true. else echo Both are not true. fi if(($a == "true" || $b == "true" )) then echo Atleast one of them is true. else echo None of them is true. fi if(( ! $a == "true" )) then echo "a" was intially false. else echo "a" was intially true. fi
出力
Both are not true. Atleast one of them is true a was intially true.
ビット演算子は、ビット変数に対してビット演算を実行する演算子です。シェルスクリプトには6種類のビット演算子があります-
-
ビットごとのAND(&) は、オペランドのビットに対してバイナリAND演算を実行する演算子です。つまり、最初の変数の各ビットは、2番目の演算子のそれぞれのビットで演算されます。
-
ビットごとのOR(|) は、オペランドのビットに対してバイナリOR演算を実行する演算子です。つまり、最初の変数の各ビットは、2番目の演算子のそれぞれのビットで演算されます。
-
ビット単位のXOR(^) は、オペランドのビットに対してバイナリXOR演算を実行する演算子です。つまり、最初の変数の各ビットは、2番目の演算子のそれぞれのビットで演算されます。
-
ビット単位の補数(〜) は、オペランドのビットに対してバイナリNOT演算を実行する演算子です。つまり、最初の変数の各ビットは、2番目の演算子のそれぞれのビットで演算されます。
-
ビット単位の左シフト(<<) は、オペランドのビットを、演算子の右側で指定されたn回だけ左にシフトする演算子です。
-
ビット単位の左シフト(>>) は、オペランドのビットを、演算子の右側で指定されたn回右にシフトする演算子です。
例
a = 14 b = 67 bitwiseAND=$(( a&b )) echo Bitwise AND of a and b is $bitwiseAND bitwiseOR=$(( a|b )) echo Bitwise OR of a and b is $bitwiseOR bitwiseXOR=$(( a^b )) echo Bitwise XOR of a and b is $bitwiseXOR bitiwiseComplement=$(( ~a )) echo Bitwise Compliment of a is $bitiwiseComplement leftshift=$(( a<<1 )) echo Left Shift of a is $leftshift rightshift=$(( b>>1 )) echo Right Shift of b is $rightshift
出力
Bitwise AND of a and b is 2 Bitwise OR of a and b is 79 Bitwise XOR of a and b is 77 Bitwise Compliment of a is -15 Left Shift of a is 28 Right Shift of b is 33
ファイルテストオペレーター
ファイルテスト演算子は、ファイルの特定のプロパティをテストするために使用されます。ファイルテスト演算子の一部は次のとおりです:
-
-b演算子 指定したファイルがブロック特殊ファイルかどうかを確認するために使用します。ファイルがブロック特殊ファイルの場合、関数はtrueを返し、そうでない場合はfalseを返します。
-
-s演算子 指定されたファイルのサイズをチェックするために使用される演算子です。ファイルサイズが0より大きい場合はtrueを返し、そうでない場合はfalseを返します。
-
-r演算子 は、ファイルの内容を読み取るためのアクセスが許可されているかどうかを確認する演算子です。読み取りアクセスが許可されている場合はtrueを返し、そうでない場合はfalseを返します。
-
-w演算子 ファイルへの書き込みアクセスが許可されているかどうかをチェックする演算子です。書き込みアクセスが許可されている場合はtrueを返し、そうでない場合はfalseを返します。
-
-x演算子 ファイルを実行するためのアクセス権が付与されているかどうかを確認する演算子です。実行アクセスが許可されている場合はtrueを返し、そうでない場合はfalseを返します。
-
シェルスクリプトでヒアドキュメントを使用する方法
ヒアドキュメント( Heredoc )は、特別なコードブロックとして扱われる入力またはファイルストリームリテラルです。このコードブロックは、処理のためにコマンドに渡されます。 ヒアドキュメント UNIXに由来 シェルであり、sh、tcsh、ksh、bash、zsh、cshなどの一般的なLinuxシェルで見つけることができます。特に、Perl、Ruby、PHPなどの他のプログラミング言語もヒアドキュメントをサポートしています。 ヘルドックの構造 ヒアドキュメント 2つの山かっこを使用(<<) その後に区切り文字トークンが続きます 。同じ区切り文字トークンを使用して、コードのブロ
-
Linuxシェルと基本的なシェルスクリプト言語のヒントを理解する–パートI
写真は言葉以上のものを話し、下の写真は Linuxの動作についてすべてを示しています 。 また読む シェルプログラミングを学ぶための5つのシェルスクリプト–パートII Linux BASHスクリプティングの世界を航海する–パートIII Linuxシェルについて シェル :ユーザーをオペレーティングシステムに接続するコマンドラインインタプリタ コマンドを実行したり、テキストスクリプトを作成したりできます。 プロセス :ユーザーがシステムで実行するタスクはすべてプロセスと呼ばれます。プロセスは単なるタスクよりも少し複雑です。 ファイル :ハードディスク上にあります( hdd