このチュートリアルでは、 select
の基本について説明します。 Bashで構築します。
select
コンストラクトを使用すると、メニューを生成できます。
select
構築#
select
コンストラクトは、アイテムのリストからメニューを生成します。 for
とほぼ同じ構文です。 ループ:
select ITEM in [LIST]
do
[COMMANDS]
done
[リスト]コード> スペース、数値の範囲、コマンドの出力、配列などで区切られた一連の文字列にすることができます。
select
のカスタムプロンプト コンストラクトはPS3
を使用して設定できます 環境変数。
select
の場合 コンストラクトが呼び出され、リストの各項目が画面に出力され(標準エラー)、前に数字が表示されます。
ユーザーが表示されたアイテムの1つの番号に対応する番号を入力した場合、 [ITEM]
の値 そのアイテムに設定されます。選択したアイテムの値は、変数 REPLY
に保存されます。 。それ以外の場合、ユーザー入力が空の場合、プロンプトとメニューリストが再度表示されます。
select
ループは実行を続け、 break
までユーザー入力を求めます コマンドが実行されます。
select
の方法を示すため 作品を組み立てるには、次の簡単な例を見てみましょう。
PS3="Enter a number: "
select character in Sheldon Leonard Penny Howard Raj
do
echo "Selected character: $character"
echo "Selected number: $REPLY"
done
スクリプトは、番号と PS3
が付いたリストアイテムで構成されるメニューを表示します。 促す。ユーザーが数字を入力すると、スクリプトは選択された文字と数字を出力します:
1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
Enter a number: 3
Selected character: Penny
Selected number: 3
Enter a number:
select
例#
通常、 select
case
と組み合わせて使用されます if
ステートメント。
より実用的な例を見てみましょう。これは、ユーザーに入力を求め、加算、減算、乗算、除算などの基本的な算術演算を実行する単純な計算機です。
PS3="Select the operation: "
select opt in add subtract multiply divide quit; do
case $opt in
add)
read -p "Enter the first number: " n1
read -p "Enter the second number: " n2
echo "$n1 + $n2 = $(($n1+$n2))"
;;
subtract)
read -p "Enter the first number: " n1
read -p "Enter the second number: " n2
echo "$n1 - $n2 = $(($n1-$n2))"
;;
multiply)
read -p "Enter the first number: " n1
read -p "Enter the second number: " n2
echo "$n1 * $n2 = $(($n1*$n2))"
;;
divide)
read -p "Enter the first number: " n1
read -p "Enter the second number: " n2
echo "$n1 / $n2 = $(($n1/$n2))"
;;
quit)
break
;;
*)
echo "Invalid option $REPLY"
;;
esac
done
スクリプトを実行すると、メニューと PS3
が表示されます。 促す。ユーザーは、操作を選択してから2つの数値を入力するように求められます。ユーザーの入力に応じて、スクリプトは結果を印刷します。ユーザーは、 break
まで、選択するたびに新しい操作を実行するように求められます。 コマンドが実行されます。
1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 1
Enter the first number: 4
Enter the second number: 5
4 + 5 = 9
Select the operation: 2
Enter the first number: 4
Enter the second number: 5
4 - 5 = -1
Select the operation: 9
Invalid option 9
Select the operation: 5
このスクリプトの欠点の1つは、整数でしか機能しないことです。
これはもう少し高度なバージョンです。 bc
を使用しています 数学計算を実行するための浮動小数点数をサポートするツール。また、反復コードは関数内にグループ化されています。
calculate () {
read -p "Enter the first number: " n1
read -p "Enter the second number: " n2
echo "$n1 $1 $n2 = " $(bc -l <<< "$n1$1$n2")
}
PS3="Select the operation: "
select opt in add subtract multiply divide quit; do
case $opt in
add)
calculate "+";;
subtract)
calculate "-";;
multiply)
calculate "*";;
divide)
calculate "/";;
quit)
break;;
*)
echo "Invalid option $REPLY";;
esac
done
1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 4
Enter the first number: 8
Enter the second number: 9
8 / 9 = .88888888888888888888
Select the operation: 5
結論#
select
コンストラクトを使用すると、メニューを簡単に生成できます。これは、ユーザー入力を必要とするシェルスクリプトを作成するときに特に役立ちます。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。