我正在构建一些 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
再说一遍,这不是最理想的,但这就是我目前所得到的。