このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】シェルスクリプト: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 | スクリプトを実行するシェルを指定します。 |
| 3 | counter=0 | カウンター変数を0に初期化します。 |
| 5 | while [ $counter -le 5 ] | カウンターが5以下である間、ループを実行します。 |
| 6 | do | ループの始まりを示します。 |
| 7 | echo "カウンターの値: $counter" | カウンターの現在の値を表示します。 |
| 8 | counter=$((counter + 1)) | カウンターの値を1増やします。 |
| 9 | done | ループの終わりを示します。 |
「count.sh」スクリプトの実行
・「bash count.sh」コマンドを実行します。
user01@ubuntu-vm:~$ bash count.sh
カウンターの値: 0
カウンターの値: 1
カウンターの値: 2
カウンターの値: 3
カウンターの値: 4
カウンターの値: 5readコマンド
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 | スクリプトを実行するシェルを指定します。 |
| 3 | while true | 無限ループを開始します。 |
| 4 | do | ループの始まりを示します。 |
| 5 | echo "何か入力してください (exit で終了):" | ユーザーに入力を促すメッセージを表示します。 |
| 6 | read input | ユーザーの入力を変数inputに格納します。 |
| 7 | if [ "$input" == "exit" ]; then | ユーザーが"exit"と入力したかどうかをチェックします。 |
| 8 | break | ループを終了します。 |
| 9 | fi | if文を終了します。 |
| 10 | echo "あなたの入力: $input" | ユーザーの入力を表示します。 |
| 11 | done | ループの終わりを示します。 |
| 12 | echo "スクリプトを終了します。" | スクリプトの終了メッセージを表示します。 |
「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コマンドを使用して、ユーザーに入力を促すメッセージを表示することが一般的です。
