選択メニューを簡単に実現する・selectコマンド †bashのビルドインでselectコマンドがあります。 selectを利用て選択メニューを作る †以下、selectを利用したサンプルシェルスクリプトおよび実行結果を記します。 selectを利用したサンプルシェルスクリプト †以下のselectを用いたサンプルスクリプトを説明します。 1 #!/bin/bash 2 3 echo What linux distribution do you use? 4 ans1="Debian" 5 ans2="Ubuntu" 6 ans3="LinuxMint" 7 ans4="CentOS" 8 ans5="fedora" 9 10 select ANS in "$ans1" "$ans2" "$ans3" "$ans4" "$ans5" 11 do 12 if [ -z "$ANS" ]; then 13 continue 14 else 15 break 16 fi 17 done 18 19 echo You selected $REPLY\) $ANS
実行結果(select-01.sh) †sakura@ubuntu:~$ ./select-1.sh What linux distribution do you use? 1) Debian 2) Ubuntu 3) LinuxMint 4) CentOS 5) fedora #? 2 You selected 2) Ubuntu 範囲外の値を入力した場合 $ ./select-1.sh What linux distribution do you use? 1) Debian 2) Ubuntu 3) LinuxMint 4) CentOS 5) fedora #? 100 #? 上記の実行結果より、$REPLYには入力した文字(数字)が格納され、$ANSには数字に対応した文字列が格納されることがわかります。 #?プロンプトの変更 †selectではPS3変数にプロンプトメッセージを設定することにより#?を変更することができます。 1 #!/bin/bash 2 3 PS3="What linux distribution do you use? >" 4 ans1="Debian" 5 ans2="Ubuntu" 6 ans3="LinuxMint" 7 ans4="CentOS" 8 ans5="fedora" 9 10 select ANS in "$ans1" "$ans2" "$ans3" "$ans4" "$ans5" 11 do 12 if [ -z "$ANS" ]; then 13 continue 14 else 15 break 16 fi 17 done 18 19 echo You selected $REPLY\) $ANS 変更行は3行目だけです。 実行結果(select-02.sh) †以下、範囲外を指定し、その後3) LinuxMintを選択したときの実行結果です。 $ ./select-2.sh 1) Debian 2) Ubuntu 3) LinuxMint 4) CentOS 5) fedora What linux distribution do you use? >100 What linux distribution do you use? >3 You selected 3) LinuxMint PS3にメッセージを設定することにより選択一覧表示後、入力プロンプトが指定したメッセージになります。 |