![옵션이 목록의 내용이 되도록 bash 메뉴를 스크립트하는 방법은 무엇입니까?](https://linux55.com/image/169497/%EC%98%B5%EC%85%98%EC%9D%B4%20%EB%AA%A9%EB%A1%9D%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9D%B4%20%EB%90%98%EB%8F%84%EB%A1%9D%20bash%20%EB%A9%94%EB%89%B4%EB%A5%BC%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 일반적인 bash 메뉴 스크립트를 사용하고 있습니다.
#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
esac
done
실행하면 내용은 다음과 같습니다.
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice:
list.txt라는 파일이 있습니다.
Android
iOS
Windows
옵션이 list.txt의 내용이 되도록 bash 메뉴 스크립트를 작성하는 방법:
1) Android
2) iOS
3) Windows
4) Quit
Please enter your choice:
답변1
당신은 교체할 수 있습니다
options=("Option 1" "Option 2" "Option 3" "Quit")
그리고
mapfile -t options < list.txt
options+=( "Quit" )
그리고 case
패턴을 조정하세요. 변수의 내용을 테스트하는 대신 선택한 숫자가 포함되어 있어 확인하기 쉬운 변수를 $opt
사용할 수 있습니다 .$REPLY
답변2
파일을 배열로 읽어옵니다.
#!/usr/bin/env bash
readarray -t list < list.txt
PS3='Please enter your choice or 0 to exit: '
select selection in "${list[@]}"; do
if [[ $REPLY == "0" ]]; then
echo 'Goodbye' >&2
exit
else
echo $REPLY $selection
break
fi
done