2012-05-12 65 views
1

好的,我基本上是想讓用戶決定他們想用哪個驅動來安裝軟件。我希望發佈一個類似「您想要安裝到哪個驅動器」的問題?然後列出編號的驅動器,以便用戶可以輕鬆選擇其中一個驅動器。有沒有辦法給ls結果編號,然後讓用戶選擇一個。我正在考慮使用case命令,或者使用echo和read,但是我無法讓它工作得很正確。另外我應該添加這是在Mac上bash。非常感謝。如何用數字列出目錄,以便用戶可以在bash中選擇一個目錄?

+0

通常情況下,你會問用戶通過命令行來指定。 –

+0

我會怎麼做? –

回答

3

使用select

PS3='which drive would you like to install to? ' 
select dir in */ quit 
do 
    if [[ $dir == quit ]] 
    then 
     break 
    fi 
    echo "$dir" # or do other stuff 
done 

您可以使用case聲明select塊內,如果適合您的需求。

另外,參見dialogwhiptail。不幸的是,似乎來與OS X的

+0

好吧,所以在實現中似乎是它創建一個循環。每當我的代碼的下一部分執行它,然後回到「你想要安裝哪個驅動器?」的問題。這是從「ps3 =」還是可能導致這種情況,只要我使用select命令,我需要使用ps3還是可以使用簡單的回聲?哦,非常感謝你! –

+0

@BrandonOney:'PS3'只需設置'select'語句的提示。這是循環的'select'語句。 'break'語句是退出循環的語句 - 它可以是'if'或'case'的一部分。正如你所看到的,我將目錄作爲選項的一部分,但我添加了「退出」並將其作爲另一個選項進行測試。 'EOF'也退出(例如,用戶按下Ctrl-D)。 –

0

試試這個:

ls | cat -n; read a; ls | head -n $a | tail -n 1 
+0

這似乎工作,但我不是積極的如何工作,什麼是輸出變量?謝謝 –

+0

'ls |貓-n;讀一個; d = \'ls |頭-n $ a | tail -n 1 \'; cd $ d' – fcioffi

相關問題