debconf を使用して、任意の長さのユーザー値の配列を取得します。

debconf を使用して、任意の長さのユーザー値の配列を取得します。

私はいくつかのdebパッケージファイルを作成していますが、いくつかのインスタンスで1つ取得したい場合があります。以上ユーザーからの任意の文字列値 (つまり、複数選択ではない)。現在、これを実行する方法が見当たらないので、可能かどうか疑問に思っています。

例としては、マシンの管理者ユーザーのプールを設定する場合が挙げられます。この場合、次のように質問します。

$ 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

繰り返しますが、理想的ではありませんが、これが私がこれまでに得たものです。

関連情報