BASH 如何從選項列表中選擇

2021-04-26 19:32:58 字數 1139 閱讀 9645

問題

如何提供給使用者選項列表,並且只有在必要的時候,使用者才需要進行選擇

解決方案

使用bash內建的select命令來建立選項列表,使用者通過對應的序號進行選擇。

#!/bin/bash

# cookbook filename: select_dir

directorylist="finished $(ls /)"

ps3='directory to process? ' # set a useful select prompt

until [ "$directory" == "finished" ]; do

printf "%b" "/a/n/nselect a directory to process:/n" >&2

select directory in $directorylist; do

# user types a number which is stored in $reply, but select

# returns the value of the entry

if [ "$directory" = "finished" ]; then

echo "finished processing directories."

break

elif [ -n "$directory" ]; then

echo "you chose number $reply, processing $direc"

# do something here

break

else

echo "invalid selection!"

fi# end of handle user's selection

done # end of select a directory

done # end of while not finished

討論

通過上面的示例可以看出,select使得建立乙個選項列表更加簡單,不過值得注意的一點是要提供乙個退出或是完成的選項。

使用者的選擇序號儲存在$reply中,選擇的值儲存在呼叫select時候你指定的變數中。

從n個數中選擇k個數

這是組合問題,組合問題有幾種寫法,且時間複雜度位o n 2 1 暴力迴圈,適用於固定的k 比方從7個數中找兩個數 int main sort nums.begin nums.end int count 0 for int i 0 i nums.size i cout count 2 當前數選不選,遞...

Python 從列表中選取任意個元素求和

碰到乙個比較好玩的問題,我有許多小額的發票,需要從這些發票中湊出乙個指定的整數來。怎麼去實現呢?這些小額發票,我們可以用乙個列表來表示。比如a 1,3,5,6,8 那麼這個列表的元素可能產生多少種組合呢?由於列表裡面每乙個元素都可能有,也可能沒有。所以這裡面就有2的5次方種變化。驗證 ps 參考cs...

從m個數中選擇n個數的實現

從m個數中選出n個數來 0 n m 要求n個數之間不能有重複,其和等於乙個定值k。求一段程式,羅列所有的可能。例如備選的數字是 11,18,12,1,2,20,8,10,7,6 和k等於 18 那麼組合的可能有 18 8,10 2,20 12,6 11,7 11,1,6 1,10,7 12,2,8 ...