1. ホーム
  2. スクリプト・コラム
  3. リナックスシェル

Linuxシェルセレクトメニュー選択実装コード

2022-01-05 03:26:23

あなたがシェルでメニューを実装する必要があると仮定すると、それはあなたがループを使用すると、研究では、シェルの選択は非常にこの対話型のメニューを実現するために便利なことができる発見、相互作用を達成するために読んでいると推定される。

1. セレクト構文

select var in ...
do
	#your code
done

2. 例

#! /bin/bash
 
echo "what is your favorite color :" 
select color in "red" "blue" "green" "white" "black"
 do
     echo "you choose is $color"
     break
 done

Bash Shellでselectコマンドを使う簡単な例

前置き

今日はたまたま自動パッケージングスクリプトを書いていて、またbashシェルを使ったので、嬉しい気分です。ここでは、selectコマンドを紹介します。

今回は、メニューの選択を助けてくれるコマンド、selectを紹介したいと思います。

形式
私も今日初めてselect処理制御を使いました。selectはphpでもJavaでもCでも実装されていませんが、Bash Shellではselectの書式は以下のようになります。
次のようなものです。

select $var in ${list[@]}
do
statements that can use $var
done

selectが実行されると、リスト配列をもとに選択メニューが与えられ、ユーザーの選択結果が変数$varに保存され、その後、ステートメントが実行されます。実行完了
実行が完了すると、再びメニューが表示され、ユーザーに選択肢が与えられます。もしユーザーが選択ループから飛び出したい場合は、条件に応じてループ本体にbreak文を追加する必要があります。

selectの例を挙げると、以下のようになります。

#! /bin/bash
fruits=(
"apple"
"pear"
"orange"
"watermelon"
)
echo "Please guess which fruit I like :"
select var in ${fruits[@]}
do
if [ $var = "apple" ]; then
echo "Congratulations, you are my good firend!"
break
else
echo "Try again!"
fi
done

例2

#! /bin/sh

select ch in "begin" "end" "exit"
do
    case $ch in
    "begin")
        echo "start something"
        ;;
    "end")
        echo "stop something"
        ;;
    "exit")
        echo "exit"
        break;
        ;;
    *)
        echo "ignorant"
        ;;
    esac
done;


ランニングの効果

yuxuecheng@linux:~/shellSource> . /select_test.sh
1) 開始
2) 終了
3) 終了
#? 1
始める
#? 2
止める
#? 4
無知
#? begin
無知
#? 3
出口

注:selectは循環選択で、通常case文と一緒に使われます。