シェルスクリプト(bash)でbreakとcontinueステートメントを使う方法
この記事では、bashスクリプトにおけるbreakとcontinueの使い方を詳しく解説します。bashには主に3種類のループ構文(for、while、until)が用意されており、breakとcontinueはbashの組み込みコマンドとして、ループの流れを制御するために使われます。この概念はPythonをはじめとする人気プログラミング言語にも存在するため、覚えておくと非常に役立ちます。
$ type -a break continue
breakステートメントでループを抜ける
breakステートメントを実行すると、その時点でループから抜け出し、制御はループの次のステートメントへ移ります。helpコマンドを実行すれば、breakに関する詳細な情報を確認できます。
$ help break
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
continueステートメントで特定の反復をスキップする
ループ自体は完全に抜け出すのではなく、特定の条件を満たしたときだけコードブロックの実行をスキップしたい場合はどうすればよいのでしょうか。そんなときに活躍するのがcontinueステートメントです。continueは条件が満たされた際にコードブロックの実行をスキップし、制御をループ文に戻して次の反復処理へ移行させます。
ヘルプを表示するには、以下のコマンドを実行します。
$ help 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
Pythonのpassステートメントとの違いと代替方法
Pythonをご存知の方なら、breakやcontinueの動作はPythonでもまったく同じであることに気づくでしょう。ただし、Pythonにはpassというもう一つのループ制御ステートメントが存在します。
passはいわゆるnullステートメントのようなもので、インタープリタはこれを読み込みますが、何の操作も実行しません。つまり単純に「何もしない」という結果になります。bashにはこれに直接対応するステートメントはありませんが、trueキーワードやコロン(:)を使うことで同じ動作を再現できます。trueもコロンもどちらもシェルの組み込みコマンドであり、一切の操作を行いません。
$ type -a : true
以下の例を見てください。条件式が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
以上が今回の記事の内容です。ループの流れを柔軟に制御できるbreakとcontinueをマスターすれば、より効率的で読みやすいシェルスクリプトが書けるようになります。貴重なフィードバックやお役立ちのコツなどがあれば、ぜひお聞かせください。
-
Linuxでシェルスクリプトを作成する方法【初心者向け基本ガイド】
シェルスクリプトの作成は、Linuxユーザーが必ず身につけておきたい最重要スキルのひとつです。シェルスクリプトを活用すれば、手作業で一行ずつ実行すると面倒な反復タスクを効率的に自動化できます。このチュートリアルでは、すべてのLinuxユーザーが押さえておくべき基本的なシェルスクリプトの操作方法を、実例とともにわかりやすく解説します。1. 簡単なシェルスクリプトを作成するシェルスクリプトとは、ASCIIテキストで構成されたファイルのことです。まずはテキストエディタを使って、簡単なシェルスクリプトを作成してみましょう。テキストエディタにはコマンドライン型とGUI型のさまざまな種類がありますが、本ガ
-
Linuxでカスタムシェル関数とライブラリを作成・活用する方法
Linuxにおいて、シェルスクリプトはシステム管理タスクの実行や自動化、簡単なコマンドラインツールの作成など、さまざまな場面で役立ちます。本記事では、Linux初心者の方に向けて、独自のシェルスクリプトを保存すべき信頼性の高い場所、カスタムシェル関数やライブラリの書き方、そして他のスクリプトからライブラリ内の関数を呼び出す方法について解説します。 シェルスクリプトの保存場所 スクリプトを実行するときに毎回フルパス(絶対パス)を入力せずに済むようにするには、そのスクリプトを $PATH 環境変数に含まれるいずれかのディレクトリに保存しておく必要があります。 現在の $PATH の内容は、以下のコ