我正在構建一些 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
再說一次,這並不理想,但這就是我到目前為止所得到的。