【初心者でもすぐわかる】シェルスクリプトwhileの使い方

  • このエントリーをはてなブックマークに追加
  • Pocket
シェルスクリプトのwhile

シェルスクリプトのwhileは「条件が満されているあいだ処理を繰り返す」という「繰り返しの制御文」だ。

if文とおなじくtestコマンドを使用して条件式をたてることが出来る。for文とくらべ複雑な条件式がたてられ、比較的柔軟だ。

このページではwhileについて使い方をご紹介する。シェルスクリプトを書くのであれば覚えておこう。

 

一般的な書式について

while [ 条件式  ]
do
  処理…
done

実際のところtestコマンドを使用しなかった場合でも、値の結果が「真」になれば繰り返し処理をしてくれるので、コマンド結果を条件として扱うことも可能だ。例は後半に後述する。

whileのサンプルコード

実際にwhileでの動きをみていただく。

サンプルコード

vi while-ex1.sh

実行結果

$ ./while-ex1.sh

while

letについて

整数を使った演算を処理するコマンドだ。四則演算にくわえインクリメント処理(1ずつ増やす)、ディクリメント処理(1ずつ減らす)などが可能になっている。

例えば

$ let var=10+10; echo $var

$ var=10; let  var++; echo $var

となる。

もう少し実践的に

無限ループとBreak

whileは意図的に無限ループをおこないたいときにも使われる。無限ループとは永遠とwhileの外に抜け出すことができず、処理を繰り返すことだ。

しかし基本的に中でif文などの条件分岐を使い抜けだす条件を作るのが一般的だ。このとき抜けだす為の条件式に気をつけよう。抜けだす為の条件式をあやまると無限ループから抜けだせなくなる。

「while :」や「while true」や「while [ 1 ]」とすると無限ループが発生する。

サンプルコード

vi while-ex2.sh

実行結果

$ ./while-ex2.sh

while ループ

抜けだせなくなる初歩的な例

vi while-bad-ex1.sh

通常この様な書き方はしないが、一例としてとらえてほしい。

なにかしらの無限ループをする場合条件分岐で「break」への糸口をつくるが、その条件分岐を間違えると抜けだせなくなる。

コンピュータプログラムは基本的に「記述規則のエラー」は検出できるが、処理内容が「意図的かどうか?」は判別しないのである。良くも悪くも愚直なのだ。

無限ループが止まらなくなったら

意図しない無限ループが発生した場合は「Control + c」を連打すると止められる。

条件式にはtest以外も設定可能

条件式にはtest以外を設定することもできる。典型的な実用例としては下記のようなものがある。

サンプルコード

vi while-ex3.sh

実行結果

$ cat testfile.txt

$ ./while-ex3.sh

test以外のケース

continue文について

whileなどの文の先頭に戻る。結果continue文を実行した場合、後ろに書いてある文は実行されない。

vi while-ex4.sh

実行結果

$ ./while-ex4.sh

continue

その他:似たり寄ったりなコマンド

時代とともに変化しつづけてきたLinuxはことによりけり「似たり寄ったりな結果になるコマンド」が存在することがある。

今回のスクリプトの例でletコマンドを使いCOUNTERの値を増やしたがexprでも同じことが可能だ、もしくはbcなどのコマンドを使用しても問題ないだろう。

どれを使うか迷うかもしれないが、基本的な方針としては可読性の高いものを選択するというのも一つの基準だ。しかし、なにかしらのこだわりなどがある場合など、最終的にユーザの判断にゆだねられる。

LinuxやUnixというのは方法、選択肢を多く提供してくれるシステムだ。最初は選択肢の多さにとまどうかもしれないが「状況が使うべきコマンドを選ぶ」ことも多い、ケースバイケースで使っていこう。

まとめ

このページではシェルスクリプトのwhileについてまとめてご紹介した。

forももちろん使うが、whileも活躍する場面が多いため、ぜひ理解して使いこなせるようになっておこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

コメントを残す

*