bash를 인덱스 0에서 시작하고 출력을 선택하는 방법은 무엇입니까?

bash를 인덱스 0에서 시작하고 출력을 선택하는 방법은 무엇입니까?

경험이 부족한 일부 사용자라도 bash다음 사실을 동시에 알 수 있습니다.bash 정렬항상 인덱스 0에서 시작합니다. 그러나 select다음 예와 같이 항상 원하는 대로 작업을 수행하세요.

#!/bin/bash
choices=(NONE nyc la chicago little_rock miami)

select choice in ${choices[@]}; do
  [[ " ${choices[*]} " == *" $choice "* ]] && break
done
echo "Choice was: $choice ; first element is ${choices[0]}"

출력은 다음과 같습니다

1) NONE
2) nyc
... etc. ...

하지만 ${choices[0]}그래도 "NONE"이 출력됩니다! 그래서 강제 select로 시작하게 하는 방법이 있어야 한다고 생각합니다.인덱스 0, 1이 아닙니다.

(이것의 더 깊은 의미에 대해 질문하는 사람이 있는 경우: 실제로는 9개 이상의 옵션 처리를 자주 건너뛰어야 하는 경우(메뉴에서 "0"으로 설정하는 것이 좋음) 편의상 최소한- 옵션을 "10"으로 사용했으므로 거의 모든 경우에 숫자만 입력하면 됩니다.

답변1

메뉴에 항목 번호가 표시되는 기준을 변경할 수 있는 옵션은 없습니다. 귀하의 질문에서 ".. 경험이 부족한 일부 bash 사용자라도 ...인덱스 0에 대해 알게 될 것입니다"라고 언급하셨습니다.

예, 맞습니다. 하지만 select메뉴는 그런 목적으로 만들어진 것이 아닙니다.배쉬 사용자("프로그래머" 읽기) - 그 목적은최종 사용자(GUI 이전 시절) 그들은 일반적으로 bash에 대해 아무것도 몰랐습니다. 스크래치 기반 목록(따라서 귀하의 선호도)에 익숙해지는 것은 프로그래머의 일이지만 최종 사용자에게는 익숙하지 않습니다.

관련 정보