선택 메뉴의 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

관련 정보