스크립트

스크립트

이것이 가능합니까 (bash v5.0.3)?

추가 코드 재사용 및 스크립트 자동화를 위해 연관 배열의 키를 사용하여 선택 목록을 동적으로 채우고 싶습니다. 일부 키에는 공백만 필요합니다. 나는 내 문제를 다음과 같이 분리한 것 같다.choices="${!playlist_url[@]}" # Need quoted key expansion here, but choices="${!playlist_url[@]@Q} does nothing"

내 스크립트는 다음과 같습니다. "1)" 다음에 모든 업로더가 연결되어 인쇄된 선택 옵션이 표시됩니다. 내가 달성할 수 있는 최선의 방법은 키를 $choices의 작은 따옴표로 묶고 따옴표 밖으로 나가는 것입니다.choices=("Quit ${choices@Q}")

스크립트


# Creates the array
declare -A playlist_url

# Sets the field separator to comma and reads in the uploader & url
## EXAMPLES: from ~/.config/youtube-dl/playlists-hcs7 ##
# UploaderName,https://www.youtube.com/playlist?list=xx...xx
# Uploader Name,https://www/youtube.com/playlist?list=xx...xx
# Up Loader Name,https://www/youtube.com/playlist?list=xx...xx

while IFS=\, read -p "uploader,url" uploader url
do
    playlist_url[$uploader]="$url"
done <~/.config/youtube-dl/playlists-hcs7

#unset IFS  <--Ignore my trying to better understand the IFS
#IFS=       <--"      "
choices=${!playlist_url[@]}  # Need quoted key expansion here (I think!)
choices=("Quit ${choices}") # Prepending 'Quit' for case break below

clear

PS3="Make a selection: "

select option in "$choices";
do
    case $option in
        "Quit")
            echo "Exiting."
            break
            ;;
        *)
            echo "Debug: $option"
            # Do stuff
            ;;
    esac
done

사용된 자원

  • 배쉬 맨페이지
  • 검색 엔진에서 수많은 재작성
  • 도움이 되는답변/질문범위는 비슷하지만 적용 방식은 다릅니다.

즉, 연결된 답변의 편집 내용은 다음과 같습니다.

편집: 이 질문에 답변한 지 거의 5년 후, bash 4.4가 출시되었습니다. 여기에는 bash에서 다시 구문 분석할 수 있도록 변수를 참조하는 "${var@Q}" 확장자가 있습니다.

관련 정보