"만들기"는 "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