2016-02-10 33 views
1

我從來沒有編寫過shell腳本,可以使用一些幫助。我需要製作一個菜單,每個選項都是在線用戶。從這個菜單中,我可以選擇一個用戶並查看他的流程。我無法弄清楚如何從用戶製作菜單。Shell腳本 - 基於用戶在線創建流程菜單

echo Users Online 
who > users.txt 
cut -c1-6 users.txt > usernames.txt 

這將用戶名的全部6個字符放入文本文件中,每個用戶放在一行。這是我卡住的地方。我需要讓每個用戶都可以在我的腳本中選擇這樣的選項:

Users: 
1) user1 
2) user2 
3) user3 

程序根據要檢查其進程的用戶輸入一個數字。任何幫助表示讚賞。

回答

1

看一看bash的select命令:

select foo in $(users); do echo "$foo selected"; done 

參見:help select

+1

要改變你的提示,當你進入一個選項。使用PS3(提示字符串3)環境變量。就在選擇做'PS3 ='之前輸入你的選擇:''爲後續子進程(shell)保存env var值將其導出爲'export PS3 ='輸入你的選擇:'' – ritesht93

+0

這個選擇命令看起來棒極了!我只是嘗試了它,然後繼續得到「select:not found」這是一個.sh文件,但我不確定我是否能夠使用select命令。其他命令,如grep,ps,以及所有的工作。 – Redmond

+0

'select'是一個bash shell builtin,注:bash與sh不同,bash是sh的超集,即sh的所有featuers都存在於bash中。 bash = bourne再次shell,sh =原始bourne shell。 bash具有sh的所有特性加上更多,其中1個是'select' – ritesht93