Utilice debconf para obtener matrices de longitud arbitraria de valores de usuario

Utilice debconf para obtener matrices de longitud arbitraria de valores de usuario

Estoy creando algunos archivos del paquete deb y me he encontrado con varios casos en los que me gustaría obtener uno.o másvalores de cadena arbitrarios (es decir, NO selección múltiple) de un usuario. Actualmente no veo forma de hacer esto y me pregunto si es posible.

Un ejemplo sería configurar un grupo de usuarios administradores para una máquina. En este caso, podría preguntar:

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

Presumiblemente, esto produciría una matriz para los usuarios y una matriz coincidente para las contraseñas. (Nota: ejemplo algo artificial, por lo que no me interesan las discusiones sobre si este caso de uso en particular es una buena idea o no).

¿Existe alguna convención comunitaria para abordar esto? ¿Existe alguna solución de módulo de configuración que no conozco?

Respuesta1

Ok, no parece haber una buena manera de hacer esto. Estoy enviando esta respuesta (aunque no la acepto) comoposiblesolución, y una que probablemente voy a emplear en el corto plazo.

Puede recopilar respuestas de matrices simples como listas separadas por espacios y luego simplemente analizarlas en matrices bash como esta:

$ 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, si necesitas hacer algo más complejo que esto, estás jodido. Si desea aceptar valores con espacios, puede solicitar que los usuarios citen sus valores y luego los utilicen evalen el valor entrante para convertirlo en una matriz:

$ 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

Nuevamente, no es ideal, pero eso es lo que tengo hasta ahora.

información relacionada