debconf를 사용하여 사용자 값의 임의 길이 배열을 가져옵니다.

debconf를 사용하여 사용자 값의 임의 길이 배열을 가져옵니다.

몇 가지 deb 패키지 파일을 작성 중인데 하나를 얻고 싶은 경우가 많이 있습니다.이상사용자의 임의 문자열 값(즉, 다중 선택 아님). 현재로서는 이 작업을 수행할 수 있는 방법이 없으며 이것이 가능한지 궁금합니다.

예를 들어 시스템에 대한 관리 사용자 풀을 설정하는 경우가 있습니다. 이 경우 다음과 같이 질문할 수 있습니다.

$ Please add a user:
$ 
$ username: someuser
$ password:
$ password set successfully
$ 
$ User "someuser" successfully added. Would you like to add another? [y,n]: y
$
$ username: notheruser
$ password: 
$ password set successfully
$
$ Use "notheruser" successfully added.....

아마도 이것은 사용자에 대한 배열과 비밀번호에 대한 일치하는 배열을 생성할 것입니다. (참고: 다소 조작된 예이므로 이 특정 사용 사례가 좋은 아이디어인지 여부에 대한 논의에는 관심이 없습니다.)

이 문제를 해결하기 위한 커뮤니티 컨벤션이 있나요? 내가 모르는 confmodule 솔루션이 있나요?

답변1

좋습니다. 이 작업을 수행하는 좋은 방법은 없는 것 같습니다. 나는 이 답변을 (수락하지는 않지만)가능한제가 단기적으로 사용할 솔루션입니다.

간단한 배열 답변을 공백으로 구분된 목록으로 수집한 다음 다음과 같이 bash 배열로 구문 분석할 수 있습니다.

$ read ANS
$ these are four values
$ ANS=($ANS)
$ for a in "${ANS[@]}" do
$     echo "Answer: $a"
$ done
$ 
$ # Outputs:
$ #
$ # Answer: these
$ # Answer: are
$ # Answer: four
$ # Answer: values

분명히 이보다 더 복잡한 작업을 수행해야 한다면 망할 것입니다. 공백이 포함된 값을 허용하려면 사용자에게 해당 값을 인용한 다음 eval들어오는 값을 사용하여 배열로 변환하도록 요청할 수 있습니다.

$ read ANS
$ these are 'four or five' values
$ eval "ANS=($ANS)"
$ for a in "${ANS[@]}" do
$     echo "Answer: $a"
$ done
$ 
$ # Outputs:
$ #
$ # Answer: these
$ # Answer: are
$ # Answer: four or five
$ # Answer: values

다시 말하지만, 이상적이지는 않지만 그것이 내가 지금까지 얻은 것입니다.

관련 정보