Use o debconf para obter matrizes de comprimento arbitrário de valores do usuário

Use o debconf para obter matrizes de comprimento arbitrário de valores do usuário

Estou construindo alguns arquivos de pacote deb e me deparei com vários casos em que gostaria de obter umou maisvalores de string arbitrários (ou seja, NÃO seleção múltipla) de um usuário. Atualmente não vejo como fazer isso e estou me perguntando se é possível.

Um exemplo seria configurar um pool de usuários administradores para uma máquina. Neste caso, eu poderia perguntar:

$ 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.....

Presumivelmente, isso produziria um array para usuários e um array correspondente para senhas. (Observação: exemplo um tanto inventado, por isso não estou interessado em discussões sobre se esse caso de uso específico é ou não uma boa ideia.)

Existe alguma convenção comunitária para abordar isso? Existe uma solução confmodule que eu não conheço?

Responder1

Ok, não parece haver uma boa maneira de fazer isso. Estou enviando esta resposta (embora não a aceite) como umpossívelsolução, e uma que provavelmente irei empregar no curto prazo.

Você pode reunir respostas simples de arrays como listas separadas por espaços e depois analisá-las em arrays bash como este:

$ 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

Obviamente, se você precisar fazer algo mais complexo que isso, você está ferrado. Se quiser aceitar valores com espaços, você pode solicitar que os usuários citem seus valores e depois usem evalo valor recebido para transformá-lo em um array:

$ 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

Novamente, não é o ideal, mas é o que tenho até agora.

informação relacionada