Linux

루프 세부 사항에서 쉘 선택

빼이 2020. 10. 13. 17:00
반응형

select in 루프는 상호 작용을 향상시키는 데 사용되며 번호가 매겨진 메뉴를 표시 할 수 있으며 사용자는 다른 번호를 입력하여 다른 메뉴를 선택하고 다른 기능을 수행 할 수 있습니다.


Select in은 터미널과 같은 대화 형 시나리오에 매우 적합한 Shell의 고유 한 루프이며 C 언어, C ++ , Java , Python , C # 및 기타 프로그래밍 언어 에서는 사용할 수 없습니다 .


Shell select in loop의 사용법은 다음과 같습니다.

  • select variable in value_list
  • do
  •     statements
  • done

variable은 변수, value_list는 값 목록, in은 Shell의 키워드입니다. select in과 for in 의 구문이 얼마나 유사한 지 알 수 있습니다 .


먼저 루프에서 선택의 예를 살펴 보겠습니다.

  1. #! / bin / bash
  2. echo "좋아하는 OS는 무엇입니까?"
  3. select name in "Linux"  "Windows"  "Mac OS"  "UNIX"  " Android "  
  4. do
  5.     echo $ name
  6. done
  7. echo "너는 $name를 선택했다."

작업 결과 :

가장 좋아하는 OS는 무엇입니까?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#? 4↙

너는 UNIX를 선택했다.

#? 1↙

너는 Linux를 선택했다.

#? 9↙ 

넌 를 선택했다. 

#? 2↙

넌 Windows를 선택했다.

#? ^D



#?사용자에게 메뉴 번호를 입력하라는 메시지를 표시하는 데 사용되며 ^D Ctrl + D 키 조합을 누르는 것을 의미하며 루프에서 선택을 종료하는 기능입니다.


select 문을 실행하면 value_list 값 목록의 내용이 메뉴 형태로 표시됩니다. 사용자가 메뉴 번호를 입력하여 특정 값이 선택되었음을 나타내면이 값이 변수 변수에 할당 된 후 루프 본문에서 실행됩니다. 문 (do와 done 사이의 부분).


각주기에서 select는 사용자에게 메뉴 번호를 입력하고 환경 변수 PS3의 값을 프롬프트로 사용하도록 요청합니다. #?PS3 의 기본값 은이며 PS3의 값을 수정하여 프롬프트를 수정할 수 있습니다.


사용자가 입력 한 메뉴 번호가 위에서 입력 한 9와 같이 범위 내에 있지 않으면 변수에 null 값이 할당됩니다. 사용자가 null 값을 입력하면 (아무것도 입력하지 않고 Enter를 누름) 메뉴가 다시 표시됩니다. .


select는 무한 루프 (무한 루프)입니다. null 값을 입력하거나 잘못된 값을 입력해도 루프가 종료되지 않습니다. 루프는 break 문을 만나거나 Ctrl + D 키 조합을 눌렀을 때만 종료 될 수 있습니다.

완전한 예

select in은 일반적 으로 case in 과 함께 사용되며 사용자가 다른 숫자를 입력하면 다르게 반응 할 수 있습니다.


위 코드를 수정하고 문에 case를 추가합니다.

  1. #! / bin / bash
  2. echo "좋아하는 OS는 무엇입니까?"
  3. select name in "Linux"  "Windows"  "Mac OS"  "UNIX"  "Android"
  4. do
  5.     case $name in
  6.         "Linux" )
  7.             echo "Linux는 UNIX와 유사한 운영체제입니다. 오픈 소스이며 무료이며 다양한 서버 장치 및 임베 디드입니다."
  8.             break
  9.             ;;
  10.         "Windows" )
  11.             echo "Windows는 Microsoft에서 개발 한 개인용 컴퓨터 운영 체제로, 비공개 소스 요금입니다."
  12.             break
  13.             ;;
  14.         "Mac OS" )
  15.             echo "UNIX에 애플을 기반으로 개발 된 그래픽 인터페이스 운영 체제는 Apple에서 제공하는 하드웨어에서만 실행할 수 있습니다."
  16.             break
  17.             ;;
  18.         "UNIX" )
  19.             echo "UNIX는 운영 체제의 창시자이며 이제 점차 역사 단계에서 물러났습니다. 특별한 경우에 사용됩니다."
  20.             break
  21.             ;;
  22.         "기계적 인조 인간" )
  23.             echo "Android는 Google에서 개발 한 모바일 운영체제로 현재 시장 점유율이 70 %입니다."
  24.             break
  25.             ;;
  26.         *)
  27.             echo "입력 오류, 다시 입력하십시오"
  28.     esac
  29. done

사용자는 루프를 종료하기 위해 올바른 번호를 입력하기 만하면됩니다. 입력이 잘못되면 다시 입력해야합니다.


결과 1을 실행하고 올바른 옵션을 입력하십시오.

선호하는 OS는 무엇입니까?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#? 2

Windows는 Microsoft에서 개발 한 개인용 컴퓨터 운영 체제로, 비공개 소스 요금입니다.



결과 2 실행, 잘못된 옵션 입력 :

가장 좋아하는 OS는 무엇입니까?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#? 7

입력 오류, 다시 입력하십시오 .

#? 4

UNIX는 운영 체제의 창시자이며 이제 점차 역사 단계에서 물러났습니다. 특별한 경우에 사용됩니다.



결과 3을 실행하고 null 값을 입력합니다.

좋아하는 OS는 무엇입니까? 

1) 리눅스

2) 윈도우

3) 맥 OS

4) UNIX

5) 안드로이드

#?

1) 리눅스

2) 윈도우

3) 맥 OS

4) UNIX는

5) 안드로이드

#? 3

Mac OS는 UNIX에 애플을 기반으로 개발 된 그래픽 인터페이스 운영 체제는 Apple에서 제공하는 하드웨어에서만 실행할 수 있습니다.

반응형