쉘 스크립트의 "옵션"은 어떻게 작동합니까?

쉘 스크립트의 "옵션"은 어떻게 작동합니까?

여기 답변에서 일부 코드를 찾아 필요에 맞게 조정했지만 이제 두 가지 질문이 있습니다.

질문 1:Case 문의 코드가 완료된 후 옵션 텍스트를 표시하려면 어떻게 해야 합니까? 이렇게 하면 사용자가 옵션을 다시 볼 수 있습니다.

질문 2:스크립트를 실행할 때 각 옵션이 별도의 줄에 표시되도록 할 수 있습니까? 아직 아님.

options=(
        "quit/exit"
    "new rational db"
    "run php for rational codebase"
    "run php for playground codebase"
   )

select option in "${options[@]}"; do
  case "$REPLY" in
       1) break;;
       2) sudo -i -u db2inst1 bash -c "db2stop force;";;
       3) rm /tmp/createDb2*;;
       4)  ;;               
  esac
done

답변1

Q1: 40자를 초과하려면 옵션 끝에 공백을 추가하세요. 예:

options=(
        "quit/exit"
    "new rational db"
    "run php for rational codebase"
    "run php for playground codebase                       "
   )

Q2: 더 우아한 방법이 있는지 확실하지 않지만(에서는 본 적이 없음 help select) 다음과 같이 하면 작동합니다.

finished=
while test ! "$finished"; do
    select option in "${options[@]}"; do
      case "$REPLY" in
           1) finished=1;;
           2) sudo -i -u db2inst1 bash -c "db2stop force;";;
           3) rm /tmp/createDb2*;;
           4)  ;;               
      esac
      break
    done
done

관련 정보