シェルスクリプトselectの使い方【4つのサンプルコード付き】

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

シェルスクリプトではselectという構文が用意されている。

while文とメニュー表示機能が組み合わさったような機能で、シェルスクリプトらしい機能だ。

このページではサンプルプログラムをご紹介しつつ、selectの使い方をまとめてみた。参考にしていただければと思う。

シェルスクリプトのselectとは?

「select」文をつかうと簡易的な対話メニューが簡単に作成できるので便利だ。

丁度while文にメニュー表示機能がまざったような処理をする。メニューを表示しループ処理に入り、変数と分岐処理をつかって制御することが多い。

実際while文と分岐処理を使用し、作り込むと同じようなことができる。しかし若干大がかりになるので素直にselect文を使おう。

これまで解説してきた制御文は「必須の処理」が殆どだったが、今回は「より便利な処理」を実現するため制御文といえる。

なお「select」はbashで追加された制御文でshには対応していない。

selectの書式

次のようになる。

select 変数 in リスト
do
    変数に応じた処理
done

Selectのサンプルプログラム

実際にサンプルプログラムと実行結果を見て確認していただくのがわかりやすいだろう。

サンプルプログラム

vi select-ex1.sh

実行結果

$ ./select-ex1.sh

select サンプルプログラム

このように、表示をしつつループを回すのがselectだ。

終了するときにとっさに「exit」と入力しそうになるがexitと打ってもループから抜け出せない。番号を入力しよう。

その他の事柄

もう少しいりくんだサンプル

もう少し難しめの例をご紹介しよう。

vi select-ex2.sh

実行結果

$ ./select-ex2.sh

select example2

「$REPLY」が突然でてきたがこれはselectを使用するときに内部で生成される特別な変数だ。この中には、あなたの入力した値が代入される。数字の他文字列も表示される。

caseで処理を分岐、および実際にコマンドを起動させて、終了したらプロンプトを再表示するようにしている。

選択時のプロンプトを変更する

プロンプト変数を変更するとプロンプトの表示が変更できる。

プロンプト変数には「PS1、PS2、PS3、PS4」の4つあるが、PS1は通常のプロンプト、PS2はコマンド入力が完了していないときのプロンプト、対話的な継続されるプロンプト表示、telnetなどのプロンプトだ。PS3はselectなどのプロンプト、PS4はbashのデバックのためのプロンプトとなっている。

今回はPS3を変更しプロンプトを変えてみよう。

select-ex3.sh

実行結果

$ ./select-ex3.sh

select example3

caseとwhileでメニュー表示と分岐

大体ではあるが以下のようにするとメニュー表示と分岐ができる。bashではなくshしか使えない環境などは無限ループと分岐処理を使用すれば、同じ様な処理が可能だ。

もっとつくりこめば、実際のselectと同じような動作をする実装が可能だが、非常に大がかりになってしまう。

vi select-ex4.sh

実行結果

$ ./select-ex4.sh

select example4

まとめ

このページではシェルスクリプトのselectについて、4つのサンプルコードを使ってご紹介した。selectについて一通り理解できただろうか?

selectは知っておくと便利な構文だ。ぜひ実際にサンプルを手元で組んで、実行をしてみていただきたい。

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

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

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

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

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

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

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

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


資料を見てみる

SNSでもご購読できます。

コメントを残す

*