このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

シェルスクリプト:whileコマンド

シェルスクリプト:whileコマンド

 シェルスクリプトは、LinuxおよびUnixシステムでタスクを自動化するための強力なツールです。特に、繰り返し処理を実行するためのwhileコマンドは、さまざまな場面で役立ちます。例えば、ファイル操作の繰り返し、ユーザー入力の連続処理、定期的なシステムチェックなど、無限の用途があります。

繰り返し処理

 繰り返し処理には、whileコマンドを使用します。条件式が真(True)の間、繰り返し処理が実行されます。

【構文】
while 条件式
do
 コマンド
done

whileコマンドを用いたシェルスクリプトの例

例:カウンターを使用して0から5までの数を表示するスクリプト「count.sh」

テキストエディタ(nanoエディタ)などで「count.sh」を作成します。

・「nano count.sh 」コマンドを実行します。

user01@ubuntu-vm:~$ nano count.sh

 以下のシェルスクリプトを入力したら、「Ctrl + S」 を押して、内容を保存して「Ctrl + X」 を押して nano を終了します。

#!/bin/bash

counter=0

while [ $counter -le 5 ]
do
  echo "カウンターの値: $counter"
  counter=$((counter + 1))
done
「count.sh」スクリプトの解説
行番号コード説明
1#!/bin/bashスクリプトを実行するシェルを指定します。
3counter=0カウンター変数を0に初期化します。
5while [ $counter -le 5 ]カウンターが5以下である間、ループを実行します。
6doループの始まりを示します。
7echo "カウンターの値: $counter"カウンターの現在の値を表示します。
8counter=$((counter + 1))カウンターの値を1増やします。
9doneループの終わりを示します。
「count」スクリプトの解説
「count.sh」スクリプトの実行

・「bash count.sh」コマンドを実行します。

user01@ubuntu-vm:~$ bash count.sh
カウンターの値: 0
カウンターの値: 1
カウンターの値: 2
カウンターの値: 3
カウンターの値: 4
カウンターの値: 5

readコマンド

 readコマンドは、標準入力から入力を受け取り、それを変数に格納します。一般的に、read命令の前にechoコマンドを使用して、ユーザーに何を入力すればよいのかを分かりやすくします。

【構文】
read 変数名

whileコマンドとreadコマンドを用いたシェルスクリプトの例

例:ユーザー入力を繰り返し処理するスクリプト「input_loop.sh」

テキストエディタ(nanoエディタ)などで「input_loop.sh」を作成します。

・「nano input_loop.sh 」コマンドを実行します。

user01@ubuntu-vm:~$ nano input_loop.sh

 以下のシェルスクリプトを入力したら、「Ctrl + S」 を押して、内容を保存して「Ctrl + X」 を押して nano を終了します。

#!/bin/bash

while true
do
  echo "何か入力してください (exit で終了):"
  read input
  if [ "$input" == "exit" ]; then
    break
  fi
  echo "あなたの入力: $input"
done
echo "スクリプトを終了します。"
「input_loop.sh」スクリプトの解説
行番号コード説明
1#!/bin/bashスクリプトを実行するシェルを指定します。
3while true無限ループを開始します。
4doループの始まりを示します。
5echo "何か入力してください (exit で終了):"ユーザーに入力を促すメッセージを表示します。
6read inputユーザーの入力を変数inputに格納します。
7if [ "$input" == "exit" ]; thenユーザーが”exit”と入力したかどうかをチェックします。
8breakループを終了します。
9fiif文を終了します。
10echo "あなたの入力: $input"ユーザーの入力を表示します。
11doneループの終わりを示します。
12echo "スクリプトを終了します。"スクリプトの終了メッセージを表示します。
「input_loop.sh」スクリプトの解説
「input_loop.sh」スクリプトの実行

・「bash input_loop.sh」コマンドを実行します。

 「何か入力してください (exit で終了):」の問いに「apple」と入力してEnterキー、「banana」と入力してEnterキー、「orange」と入力してEnterキーを入力します。最後に「exit」と入力します。

user01@ubuntu-vm:~$ bash input_loop.sh
何か入力してください (exit で終了):
apple
あなたの入力: apple
何か入力してください (exit で終了):
banana
あなたの入力: banana
何か入力してください (exit で終了):
orange
あなたの入力: orange
何か入力してください (exit で終了):
exit
スクリプトを終了します。
シェルスクリプトの削除

この演習で作成したシェルスクリプトを削除します。

・「rm count.sh input_loop.sh」コマンドを実行し、「ls」コマンドで削除されたことを確認します。

user01@ubuntu-vm:~$ rm count.sh input_loop.sh
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

  • whileコマンドは、条件式が真である限り繰り返し処理を実行します。
  • readコマンドは、標準入力からの入力を変数に格納するために使用されます。
  • whileコマンドとreadコマンドを組み合わせることで、ユーザーからの入力を繰り返し処理するスクリプトを作成できます。
  • echoコマンドを使用して、ユーザーに入力を促すメッセージを表示することが一般的です。