숫자 선택 목록 만들기

숫자 선택 목록 만들기

단어 목록이 포함된 파일이 있습니다. 이 파일을 읽고 목록에서 동물을 선택할 수 있도록 메뉴를 만드는 방법은 무엇입니까? 간단한 bash 스크립트, 화려하지 않습니다.

예: 동물.txt

dog
cat
lion
bear

예: 필수 메뉴

1 - dog
2 - cat
3 - lion
4 - bear

Select choice: 3

You chose a lion.

답변1

사용mapfile그리고select.

예를 들어

#!/bin/bash

mapfile -t animals < "animal.txt"

select animal in "${animals[@]}"; do
    echo "$animal"
    break
done

달리기:

$ ./animal.sh
1) dog
2) cat
3) lion
4) bear
#? 2
cat

답변2

여기서는 보통 스크립트를 요청하지 않지만 어려운 부분은 제가 도와드리겠습니다.

쉘에 다음 select기능이 있다고 가정합니다(예 bash: ). 이렇게 하면 시작됩니다.

#!/bin/bash

PS3='Select choice: '
select ch in "dog" "cat" "lion" "bear"; do
    case $REPLY in
        [1-4]) break ;;
            *) echo 'Try again' >&2
    esac
done

printf 'You chose a %s\n' "$ch"

selectbash메뉴와 프롬프트 가 나타 납니다 . 힌트는 변수의 값으로 제공됩니다 PS3.

select문은 루프이며 각 반복마다 사용자가 선택합니다. 선택하다숫자(또는 사용자가 입력한 모든 항목)은 에 있고 $REPLY실제 메뉴 항목은 해당 명령문의 변수에 있습니다 select(여기서는 $ch).

case루프의 명령문은 유효한 응답이 제공되었는지 여부를 테스트합니다. 그렇다면(즉, $REPLY1과 4 사이의 단일 숫자인 경우) break루프를 종료합니다. 사용자가 다른 것을 입력하면 간단한 오류 메시지가 인쇄되고 루프는 다음 반복을 실행합니다.

메뉴 항목이 9개가 넘는 경우 값에 $REPLY여러 문자가 포함될 수 있으므로 더 복잡한 방법으로 유효한 입력을 테스트해야 할 수도 있습니다.

루프가 끝나면 메뉴에서 항목을 선택할 수 있습니다 $ch.

관련 정보