Bash'if else 'ステートメント:チュートリアルと例

条件付きコードの実行にBashでif…elseステートメントを使用する。

Bash(Bourne Again Shell)は、GNU / Linuxオペレーティングシステムのシェルコマンドプロンプトおよびスクリプト言語です。これは、ほとんどのLinuxディストリビューションのデフォルトのシェルです。

条件文は、スクリプトだけでなくコンパイルされたプログラミング言語でも不可欠です。これにより、ユーザーは、プログラミングロジックの基盤の1つである、事前定義された条件に基づいてコードを実行できます。この記事では、の使用方法を学びます if ... else Bashの条件文。

序章

The if ... else Bashのステートメントを使用すると、ユーザーは条件に基づいてコードのフローを操作できます。ユーザーは、実行する個別のコードブロックを指定できます。対応する条件が満たされると、実行時に最終的に実行されるのはそのうちの1つだけです。

3つ以上の条件を指定できることに注意してください。 エリフ ステートメントを使用できます。ユーザーは、を使用して任意の数の条件を指定できます エリフ、そして最後にを使用したデフォルト条件 それ以外 ブロック。これについては、以下の構文と例で詳しく見ていきましょう。

一般的な構文

の一般的な構文 if ... else Bashのステートメントは次のとおりです。

もしそうなら  それ以外  fi

ここで、 を満たす、つまり0(成功)を返す場合、コードブロック1が実行されます。条件が0を返さない場合、つまり障害ステータスを返す場合、コードブロック2が実行されます。 The if ... else ブロックはで終わります fi 声明。

複数の条件に対応する複数のブロックの場合、エリフ 使用されている:

もしそうなら  elif then  elif then  ... ... それ以外  fi

ここでは、条件を順番にチェックし、ステータス0(成功)を返す最初の条件のコードブロックを実行します。例えば。もしも ゼロ以外のステータス(失敗)を返し、その後 チェックされます。もしも ステータス0を返します。 実行されます。この後、それ以上の条件はチェックされず、コードの実行は次のコードに対して続行されます。 fi 声明。

どの条件もステータス0を返さない場合、 elseブロックで実行されます。 elseブロックはオプションであることに注意してください。条件が満たされない場合、および それ以外 ブロックが指定されている場合、条件付きコードブロックは実行されず、コードの実行は次のコードに対して続行されます。 fi 以下のフローグラフに示すように、ステートメント。

に注意してください それから ステートメントは、後にのみ使用されます もしもエリフ ステートメントであり、後には必要ありません それ以外 声明。

コードブロックを実行するには 変数に特定の値がある場合:

x = 0 if [$ x -eq 0] then echo "Xの値は0"ですelseecho "Xの値は0"ではありませんfi

複数の値を確認するには:

x = 2 if [$ x -eq 0] then echo "Xの値は0" elif [$ x -eq 1] then echo "Xの値は1" elif [$ x -eq 2] then echo "Value of Xは2 "else echo" Xの値は0ではありませんfi

条件は任意のLinuxコマンドにすることができます。コマンドが正常に実行されると、対応するコードブロックが実行されます。

npm -vの場合は、「システムに存在するNPM」をエコーし​​ます。それ以外の場合は、sudo apt install npm fi

上記の例では、 npm システムにインストールされていません、コマンド npm -v ゼロ以外のステータスを返しました。したがって、コードの実行は それ以外 ブロック、ここでnpmを使用してインストールします apt パッケージマネージャー。ご覧のとおり、パスワードの入力を求められ、npmのインストールが開始されました。

別のネストも可能です if ... else 内部のブロック もしも, それ以外 また エリフ ブロック:

x = 0 y = 1 if [$ x -eq 0] then echo "X is 0" if [$ y -eq 1] then echo "Y is 1" else echo "Y is not 1" fi else echo "X is 0ではないfi

これは、初期条件が満たされたときに別の条件セットをチェックする場合に役立ちます。

たとえば、次のコードはWebサーバーソフトウェアをインストールしようとします。

nginx -vの場合、echo「NGINXはすでにインストールされています。」それ以外の場合、sudo apt install nginxの場合は、「NGINXのインストールに成功しました」とエコーします。 elif sudo apt install apache2 then echo "APACHE2インストールが成功しました。"それ以外の場合は、「Webソフトウェアをインストールできません。」とエコーします。 fi

コードは最初にNginxがシステムにすでにインストールされているかどうかをチェックします。そうである場合は、メッセージを表示して終了します。そうでない場合は、Nginxをインストールしようとします。

何らかの理由でNginxをパッケージからシステムにインストールできなかった場合は、Apache2をインストールしようとします。インストール中にApache2でさえエラーが発生した場合は、ソフトウェアをインストールできなかったことを示すメッセージが表示されて終了します。

同様の方法で、ネストされたブロックを内部で使用できます エリフ 同様にブロックします。

実行中 if ... else:スクリプトとコマンドライン

他のBashコードと同様に、 if ... else ステートメントは、Bashシェルで直接使用することも、実行可能なシェルスクリプトファイルから使用することもできます。 Bashインタプリタが もしも, それ以外 また エリフ ステートメントでは、シェルを続行して、ユーザーがコードブロックを入力できるようにします。

ユーザーは、このコードをスクリプトファイルに保存して、スクリプトファイルを実行することもできます。

The #!/ bin / bash 開始時に、ファイルの実行時に使用されるインタプリタを指定します。 Bashは現在最も一般的に使用されているシェルですが、一部のユーザーはzshのようなシェルを好みます。これは、このファイルの先頭でbashの代わりに指定する必要があります。

このファイルの実行権限を付与するには、次のコマンドを実行します。

chmod + x test.sh

最後に、ファイルを実行するには、次のコマンドを実行します。

./test.sh

結論

他のプログラミング言語と同様に、 if ... else ステートメントはBashの基本的な機能です。その使用法を学ぶことは、基本的なスクリプトと高度なスクリプトを書くのに大いに役立ちます。