選択メニューのbashスクリプトでショートカットを定義する方法は?

選択メニューのbashスクリプトでショートカットを定義する方法は?

「作成」は「c」、「削除」は「d」、「新規」は「n」など、シェルスクリプトからメニューを選択してショートカットを定義するにはどうすればよいですか?

パスワード:

#!/bin/bash

PS3="Enter an option: "

select option in create delete new quit
do
    echo "Selected option was: $option"

if [ "$option" == "create" ]

then
 
read -r -p 'Create new partition: Please define a name of the partition: ' new_partition

read -r -p 'Define Size: Please define a size of the partition: ' partition_size

break

fi

if [ "$option" == "delete" ]

then
 
read -r -p 'Delete partition: Please define a name of the partition: ' delete_partition

break

fi

if [ "$option" == "new" ]

then
 
read -r -p 'Reset memory usage: Please define a name of the partition: ' reset_partition

break

fi

if [ "$option" == "quit" ]

then

break

fi

done

答え1

プロンプトに入力したselect内容はすべて$REPLY変数に反映されます。残念ながら、入力を終了するには「Enter」キーを押す必要があります。したがって、$REPLY「c」、「d」、「n」、または「q」の文字を入力するたびに、「c」、「d」、「n」、または「q」の文字が保持され、そのcase文字に対してステートメントを実行できます。 。

PS3="enter create, delete, new, quit, and hit <Return> "
select OP in create delete new quit
  do echo ">$OP<, >$REPLY<"
  done
1) create
2) delete
3) new
4) quit
enter create, delete, new, quit, and hit <Return> c
><, >c<
enter create, delete, new, quit, and hit <Return> d
><, >d<
enter create, delete, new, quit, and hit <Return> 1
>create<, >1<
enter create, delete, new, quit, and hit <Return> 

答え2

入力を読んだ後のケース切り替え:

#!/bin/sh

echo select... c: create, d: delete, x:xxx...

read OPT

case $OPT in
c*)
echo c
;;

d*)
echo d
;;

*)
echo “User Selected Choice not present”
exit 1

esac

関連情報