Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

この記事では、bashスクリプトにおけるbreakcontinueの使い方を詳しく解説します。bashには主に3種類のループ構文(forwhileuntil)が用意されており、breakcontinueはbashの組み込みコマンドとして、ループの流れを制御するために使われます。この概念はPythonをはじめとする人気プログラミング言語にも存在するため、覚えておくと非常に役立ちます。

$ type -a break continue
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

breakステートメントでループを抜ける

breakステートメントを実行すると、その時点でループから抜け出し、制御はループの次のステートメントへ移ります。helpコマンドを実行すれば、breakに関する詳細な情報を確認できます。

$ help break
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

breakの基本構文は以下の通りです。

$ break [n]

n は省略可能(デフォルトは1)

それでは実際の例を見てみましょう。これは1から20までの値を2刻みで繰り返すシンプルなforループです。条件式が評価され、true($val = 9)になるとbreakステートメントが実行され、残りの反復処理をスキップしてループが即座に終了します。

#!/usr/bin/bash

for val in {1..20..2}
do
  if [[ $val -eq 9 ]]
  then
     break
  else
    echo "printing ${val}"
  fi
done
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

continueステートメントで特定の反復をスキップする

ループ自体は完全に抜け出すのではなく、特定の条件を満たしたときだけコードブロックの実行をスキップしたい場合はどうすればよいのでしょうか。そんなときに活躍するのがcontinueステートメントです。continueは条件が満たされた際にコードブロックの実行をスキップし、制御をループ文に戻して次の反復処理へ移行させます。

ヘルプを表示するには、以下のコマンドを実行します。

$ help continue
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

先ほどbreakで使用したのと同じ例を使って確認してみましょう。$valが9と評価されたとき、continueステートメントはそれ以降のコードブロックをすべてスキップし、制御をforループに戻して次の反復処理へ進みます。

#!/usr/bin/bash

for val in {1..20..2}
do
  if [[ $val -eq 9 ]]
  then
      continue
  fi
  echo "printing ${val}"
done
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

Pythonのpassステートメントとの違いと代替方法

Pythonをご存知の方なら、breakcontinueの動作はPythonでもまったく同じであることに気づくでしょう。ただし、Pythonにはpassというもう一つのループ制御ステートメントが存在します。

passはいわゆるnullステートメントのようなもので、インタープリタはこれを読み込みますが、何の操作も実行しません。つまり単純に「何もしない」という結果になります。bashにはこれに直接対応するステートメントはありませんが、trueキーワードやコロン(:)を使うことで同じ動作を再現できます。trueもコロンもどちらもシェルの組み込みコマンドであり、一切の操作を行いません。

$ type -a : true
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

以下の例を見てください。条件式がtrue($val = 9)と評価された場合、trueステートメントは何もせず、ループはそのまま継続されます。

#!/usr/bin/bash

for val in {1..20..2}
do
  if [[ $val -eq 9 ]]
  then
      true
  fi
  echo "printing ${val}"
done
シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法

以上が今回の記事の内容です。ループの流れを柔軟に制御できるbreakとcontinueをマスターすれば、より効率的で読みやすいシェルスクリプトが書けるようになります。貴重なフィードバックやお役立ちのコツなどがあれば、ぜひお聞かせください。

  1. Linuxでシェルスクリプトを作成する方法【初心者向け基本ガイド】

    シェルスクリプトの作成は、Linuxユーザーが必ず身につけておきたい最重要スキルのひとつです。シェルスクリプトを活用すれば、手作業で一行ずつ実行すると面倒な反復タスクを効率的に自動化できます。このチュートリアルでは、すべてのLinuxユーザーが押さえておくべき基本的なシェルスクリプトの操作方法を、実例とともにわかりやすく解説します。1. 簡単なシェルスクリプトを作成するシェルスクリプトとは、ASCIIテキストで構成されたファイルのことです。まずはテキストエディタを使って、簡単なシェルスクリプトを作成してみましょう。テキストエディタにはコマンドライン型とGUI型のさまざまな種類がありますが、本ガ

  2. Linuxでカスタムシェル関数とライブラリを作成・活用する方法

    Linuxにおいて、シェルスクリプトはシステム管理タスクの実行や自動化、簡単なコマンドラインツールの作成など、さまざまな場面で役立ちます。本記事では、Linux初心者の方に向けて、独自のシェルスクリプトを保存すべき信頼性の高い場所、カスタムシェル関数やライブラリの書き方、そして他のスクリプトからライブラリ内の関数を呼び出す方法について解説します。 シェルスクリプトの保存場所 スクリプトを実行するときに毎回フルパス(絶対パス)を入力せずに済むようにするには、そのスクリプトを $PATH 環境変数に含まれるいずれかのディレクトリに保存しておく必要があります。 現在の $PATH の内容は、以下のコ