ウェブサイト検索

Bashの演算子[[と[と((の違いは何ですか?


Bashは、値を比較し、条件をテストし、数学的操作を実行するためのいくつかの演算子を提供します。これらの演算子には[[、[、(、および((が含まれ、新しいユーザーにとってはしばしば混乱を招くことがあります。ここでは、さまざまな演算子とその機能の概要を示します。

ダブルスクエアブラケット [[ ]]

Bashでは、[[と]]は条件式に使用されます。[[は単一の角括弧[ ]の上位バージョンであり、パターンマッチング、正規表現、および高度な条件式に使用されます。[[演算子は[よりも強力であり、多くのケースで好まれます。

#!bin/bash

string=Linux

if [[ $string == "Linux" ]]; then

echo "The string is Linux"

fi

次のコードでは、ダブルスクエアブラケット演算子を使用して、変数$stringの値が文字列「linux」と等しいかどうかを確認します。

シングルスクエアブラケット [ ]

[ ] は Bash の条件式に使われます。また、「テスト」コマンドとも呼ばれています。単一の角括弧演算子 [ は条件式にも使われますが、[[ よりも制限があります。ファイルの存在を確認したり、文字列が空かどうかをテストするなどの基本的な比較やテストに便利です。

#!bin/bash

Define the name of the file to check

file="/home/aaliyan/Documents/bashfile2.sh"

Check if the file exists

if [ -f $file ]; then

echo "The file exists"

else

echo "The file does not exist"

fi

このスクリプトは、指定されたディレクトリに「bashfile2.sh」という名前のファイルが存在するかどうかを確認し、ファイルが存在する場合はコンソールに「ファイルが存在します」というメッセージを出力します。存在しない場合は「ファイルが存在しません」と出力します。

括弧 ( )

括弧演算子 ( は、サブシェル環境でコマンドを実行するために使用されます。これは、括弧内で環境に加えられた変更が親シェル環境に影響を与えないことを意味します。

#!bin/bash

Change directory to /home/user/directory and list its contents

(cd /home/aaliyan/Documents && ls)

次のコードでは、括弧演算子を使用してディレクトリを/home/aaliyan/Documentsに変更し、サブシェル内でlsコマンドを実行します:

ダブルカッコ (( ))

(( と )) は算術評価に使用され、単一の括弧演算子 ( よりも、ビット演算などのより高度な機能をサポートしています。以下は、二重括弧の使い方を示す例の bash スクリプトです。

#!bin/bash

Define the values of a, b, and c

a=7

b=9

c=2

Check if the sum of a and b is greater than c

if (( $a + $b > $c )); then

echo "The sum of a and b is greater than c"

fi

次のコードでは、二重括弧演算子を使用して、変数$a$と$b$の合計が変数$c$の値より大きいかどうかを確認しています:

これらの演算子の違いをさらに理解するために、より効率的なBashコードを書くために役立つ表を示しました。これにより、これらのBash演算子をより効果的に使用できます:

オペレーター目的例
[[ expression ]]
条件式
if [[ $string == “linux” ]]; then echo “The string is linux”
[ expression ]
基本的な条件式
if [ -f $file ]; then echo “The file exists”
( command )
サブシェル環境でコマンドを実行する
(cd /home/user/directory && ls)
(( expression ))
算術演算
if (( $a + $b > $c )); then echo “The sum of a and b is greater than c”

結論

Bashの演算子[[ ]], [ ], ( ), (( ))は、用途や構文が異なります。ダブルスクエアブラケット[[ ]]演算子はパターンマッチングや文字列比較に使用され、シングルスクエアブラケット[ ]演算子は条件文やファイルテストに使用されます。括弧( )演算子はコマンドをグループ化するために使用され、ダブル括弧(( ))演算子は算術評価に使用されます。適切な演算子を使用することが重要であり、Bashスクリプトが正確かつ効率的であることを確保します。