/シェルスクリプトselectの使い方【4つのサンプルコード付き】2016.10.06シェルスクリプトselectの使い方【4つのサンプルコード付き】シェルスクリプトTweetPocketシェルスクリプトではselectという構文が用意されている。while文とメニュー表示機能が組み合わさったような機能で、シェルスクリプトらしい機能だ。このページではサンプルプログラムをご紹介しつつ、selectの使い方をまとめてみた。参考にしていただければと思う。caseとwhileでメニュー表示と分岐シェルスクリプトのselectとは?「select」文をつかうと簡易的な対話メニューが簡単に作成できるので便利だ。while文にメニュー表示機能がまざったような処理をする。メニューを表示しループ処理に入り、変数と分岐処理をつかって制御することが多い。実際while文と分岐処理を使用し、作り込むと同じようなことができる。若干大がかりになるので素直にselect文を使おう。これまで解説してきた制御文は「必須の処理」が殆どだったが、今回は「より便利な処理」を実現するため制御文といえる。「select」はbashで追加された制御文でshには対応していない。リストdo変数に応じた処理doneSelectのサンプルプログラム実際にサンプルプログラムと実行結果を見て確認していただくのがわかりやすいだろう。#といったメニューが表示される。番号で処理を指定する。"あなたが選んだ項目は$VARです。#ループから抜けだすための分岐selectで使用したVARを使用する。「5」を選択すれば条件が成立する。exit#といったメニューが表示される。番号で処理を指定する。"あなたが選んだ項目は$VARです。"#ループから抜けだすための分岐selectで使用したVARを使用する。「5」を選択すれば条件が成立する。あなたが選んだ項目はitem1です。あなたが選んだ項目はitem2です。あなたが選んだ項目はitem3です。あなたが選んだ項目はitem4です。あなたが選んだ項目はexitです。1あなたが選んだ項目はitem1です。2あなたが選んだ項目はitem2です。3あなたが選んだ項目はitem3です。4あなたが選んだ項目はitem4です。5あなたが選んだ項目はexitです。このように、表示をしつつループを回すのがselectだ。終了するときにとっさに「exit」と入力しそうになるがexitと打ってもループから抜け出せない。その他の事柄もう少しいりくんだサンプルもう少し難しめの例をご紹介しよう。#繰り返しの中でcase分を使用している。exitdo#繰り返しの中でcase分を使用している。3「$REPLY」が突然でてきたがこれはselectを使用するときに内部で生成される特別な変数だ。この中には、あなたの入力した値が代入される。数字の他文字列も表示される。caseで処理を分岐、および実際にコマンドを起動させて、終了したらプロンプトを再表示するようにしている。選択時のプロンプトを変更するプロンプト変数を変更するとプロンプトの表示が変更できる。プロンプト変数には「PS1、PS2、PS3、PS4」の4つあるが、PS1は通常のプロンプト、PS2はコマンド入力が完了していないときのプロンプト、対話的な継続されるプロンプト表示、telnetなどのプロンプトだ。PS3はselectなどのプロンプト、PS4はbashのデバックのためのプロンプトとなっている。今回はPS3を変更しプロンプトを変えてみよう。#繰り返しの中でcase分を使用している。exitdo#繰り返しの中でcase分を使用している。大体ではあるが以下のようにするとメニュー表示と分岐ができる。bashではなくshしか使えない環境などは無限ループと分岐処理を使用すれば、同じ様な処理が可能だ。つくりこめば、実際のselectと同じような動作をする実装が可能だが、非常に大がかりになってしまう。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。"あなたが選んだ項目は$VARです。あなたが選んだ項目は1です。あなたが選んだ項目は2です。あなたが選んだ項目は3です。あなたが選んだ項目は4です。item4:1あなたが選んだ項目は1です。:2あなたが選んだ項目は2です。:3あなたが選んだ項目は3です。:4あなたが選んだ項目は4です。:5まとめこのページではシェルスクリプトのselectについて、4つのサンプルコードを使ってご紹介した。selectについて一通り理解できただろうか?selectは知っておくと便利な構文だ。実際にサンプルを手元で組んで、実行をしてみていただきたい。TweetPocketこのページの続きや関連ページは下記から一覧で確認できます。・「様々な分野や言語の講師にチャレンジしてみたい」という方はぜひIT講師募集のページをご覧ください。リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。IT講師募集のページを見るSNSでもご購読できます。【IT研修専門企業のリスキルテクノロジーです。】エンジニアの入り口に立つために役立つようなコンテンツを日々ご提供していきます。講師や代表やスタッフ陣が毎日楽しく書いています。ご質問・ご指摘等はぜひコメントください。*メールアドレス(公開はされません。*次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。講師スキル向上も目指せますIT講師に応募する。