このページで解説している内容は、以下の 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
カウンターの値: 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 | スクリプトを実行するシェルを指定します。 |
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
コマンドを使用して、ユーザーに入力を促すメッセージを表示することが一般的です。