Bashのwhileループを使いこなす!基礎から実践までの完全ガイド

Bashのwhileループをマスターすることは、多くのLinuxユーザーにとって重要なスキルです。このガイドでは、whileループの基礎を解説し、実践的な例を通してどのように活用できるかを学びます。Bashスクリプトの自動化をもっと効率的に行いたい方には必見です。

Bashのwhileループとは?

Bashのwhileループは、指定した条件が真である間、繰り返し処理を実行するための構造です。シェルスクリプトでの繰り返し処理を実装するための基本的な要素であり、条件が偽に変わるまで処理を続けることができます。基本的な構文は以下の通りです。

while [ 条件 ]
do
    コマンド
done

基本的な使い方

whileループの中で使われる条件は、数値の比較やファイルの存在チェック、変数の値の判定など様々です。ここでは、シンプルなカウントダウンの例を見てみましょう。

count=5

while [ $count -gt 0 ]
do
    echo "Count is $count"
    count=$((count - 1))
done

このスクリプトは、変数countの値が0より大きい限り、カウントダウンを行うものです。このように、変数と数値の比較を条件として使うことができます。

無限ループとbreak文

場合によっては無限ループが必要なこともあります。無限ループは、ユーザーからの入力を待ったり、一定条件を満たすまで繰り返し処理が必要な場面で役立ちます。以下にその例を示します。

while true
do
    echo "Please enter your name:"
    read name
    if [ -n "$name" ]; then
        echo "Hello, $name!"
        break
    fi
done

このサンプルでは、ユーザーが名前を入力するまでループが続き、入力があった場合にbreak文でループを抜けます。

条件式の多様性

whileループの条件部は非常に多様です。以下は、ファイルの存在をチェックする例です。

file_path="/path/to/file.txt"

while [ ! -e "$file_path" ]
do
    echo "Waiting for file to appear..."
    sleep 1
done

echo "File found!"

このスクリプトは指定したファイルが出現するまで待機し、完全に自動化されたタスクを処理するために役立ちます。

実用的な例: ファイルの一行ずつの読み込み

whileループは、ファイルを一行ずつ読み取るのにも便利です。次の例では、ファイルからユーザーリストを読み取り、それぞれの名前を出力します。

while IFS= read -r line
do
    echo "User: $line"
done < "user_list.txt"

ここではIFS(内部フィールドセパレータ)を変更していることに注意してください。これにより、行全体を正確に読み取ることができます。

実践応用編: バッチ処理の自動化

次に、特定のディレクトリ内の全ての画像ファイルをサイズ変更するバッチ処理スクリプトを作成してみましょう。

#!/bin/bash

input_dir="./images"
output_dir="./resized_images"

mkdir -p "$output_dir"

files=$(ls $input_dir/*.jpg)

for file in $files
do
    filename=$(basename "$file")
    convert "$file" -resize 800x800 "$output_dir/$filename"
    echo "Resized $filename"
done

ここでは、convertコマンドを使用して画像をリサイズするバッチ処理を実行しています。このスクリプトは指定したディレクトリ内の全jpgファイルを処理し、サイズ変更後のファイルを別のディレクトリに保存します。

終わりに

Bashのwhileループは、様々なタスクを効率的に自動化するための強力なツールです。基本理解を深めたら、これらを複雑なスクリプトソリューションに組み込んで使うことができます。今回のガイドで得た知識をさらに拡張し、独自のスクリプトを構築してみてください。これにより、毎日の作業をよりシンプルで効率的に進めることが可能になります。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
未分類

コメント

タイトルとURLをコピーしました