이전 포스팅에서 다뤘던 case 제어문에 이어서 select 제어문에 대하여 알아보자
select
제어문은 조건의 여부에 따라 다음 명령을 수행하는 제어문이다.
사용자에게 여러가지의 메뉴를 번호로 표기하여 입력을 받아 명령을 수행하는 방식으로 시행된다.
기본적인 사용법은 아래와 같다.
select Variable "A" "B" "C"
do
"you choose $Variable"
done
./select.sh
> 1) A
2) B
3) C
#? 2
you choose B
중간의 #? 2는 2를 입력한다는 의미이다.
이제 한번 예시 코드를 작성해보자
#! /bin/zsh
PS3="Seclet one option number : "
echo
select var in "A" "B" "C" "D"
do
echo
echo "you choose ${var}"
echo
break
done
못보던 PS3
변수가 선언되었다.
이 변수는 기본 사용법에서 사용된 #?
를 사용자 지정 문자열로 나타내 주는 변수이다.
실행해보자
./select.sh
> 1) A 2) B 3) C 4) D
Seclet one option number : 4
you choose D
내가 선언한 A,B,C,D의 변수를 선택할때는 해당번호를 입력해야 한다.
조금 더 응용해보자
#! /bin/zsh
PS3="Select number #"
echo
number(){
select i
do
echo
echo "you choose $i"
echo
break
done
}
number one two three four five
number라는 함수 안에 select문을 사용한 예제이다.
이번엔 case
문을 함께 사용해보자
#! /bin/zsh
PS3="Select number #"
echo
select action in start stop status restart
do
echo
case $action in
start)
echo "service start";;
stop)
echo "service stop";;
status)
echo "service status";;
restart)
echo "service restart";;
*)
echo "Error!"
exit 1;;
esac
break
done
선택지로 주어지는 start, stop, status, restart
들은 action
이라는 변수에 저장이 되어 해당 변수에 따라 case문이 작동하여 지정된 문자열을 출력한다.
지정한 번호가 아닌 그 외의 번호를 입력할시 "Error!"를 출력한다.
reference