Bash 선택(메뉴 생성)

Bash 선택(메뉴 생성)

2022-05-17 last update

12 minutes reading terminal bash
본 강좌에서 우리는 Bashselect의 구조에 대한 기초 지식을 소개할 것이다.select 구조를 사용하면 메뉴를 생성할 수 있습니다.

Bash 선택 구성

select 구조는 프로젝트 목록에서 메뉴를 생성합니다.그것의 문법은 for 과 거의 같다
loop:
select ITEM in [LIST]
do
  [COMMANDS]
done
[LIST]는 빈칸, 숫자 범위, 명령 출력, 그룹 등으로 구분된 일련의 문자열일 수 있습니다.selectenvironment variable 설정PS3으로 구성된 사용자 정의 알림 사용 가능
. select 구조를 호출할 때 목록의 모든 항목이 화면에 인쇄됩니다. (표준 오류) 앞에 숫자가 있습니다.사용자가 입력한 숫자가 표시된 항목 중 하나에 해당하는 경우 [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 알림 문자를 포함하는 메뉴를 보여 줍니다.사용자가 숫자를 입력하면 스크립트가 print
선택한 문자와 숫자:
1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
Enter a number: 3
Selected character: Penny
Selected number: 3
Enter a number:

Bash 선택 예

보통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 프롬프트가 표시됩니다.작업을 선택하라는 메시지가 나타나고 두 개의 숫자를 입력합니다.사용자의 입력에 따라 쪽지는 결과를 인쇄합니다.매번 선택한 후에 사용자는 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
이 스크립트의 단점은 정수만 처리할 수 있다는 것이다.여기에 더 높은 버전이 하나 있다.우리는 수학 계산을 실행하기 위해 부동점수를 지원하는 bc 도구를 사용하고 있다.그 밖에 중복 코드는 afunction에 그룹으로 나뉜다.
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 구조를 사용하면 메뉴를 쉽게 만들 수 있습니다.사용자가 입력해야 하는 셸 스크립트를 작성할 때 특히 유용합니다.질문이나 피드백이 있으면 언제든지 댓글을 달아주세요.