2013-04-28 45 views
0

我正在做一個基於菜單的程序,我試圖調用一個函數作爲菜單選項之一。在這種情況下,它是第一選擇。但是,如果我按下1,則什麼都不會發生,但腳本起作用(我測試了它)。當我按2程序存在時,如果我按任何不同於1或2的數字,它會發出警告,表明它不是有效的選擇。菜單不想使用funcion

你們能幫忙嗎? 謝謝

#!/bin/bash 


one() { 
who | 
    awk ' 
     { User [$1]++; } 
     BEGIN { printf "|%-15s| |%15s|\n\n", "Username", "Session Count" } 
     END { for (i in User) printf "|%-15s| |%15s|\n", i, User [i] } 
    ' 
} 


while [ 1 ] 
do 
    clear 
    echo "1. Display current users with session counts" 
    echo "2. Exit" 
    read -p "Enter your menu choice [1 - 2]:" choice 
    case $choice in 
     1) 
      one;; 
     2) 
      exit 0;; 
     *) read -p "Wrong selection!!! Press [Enter] to continue..." dummyChoice;; 
    esac 
done 

回答

1

你的腳本沒問題。只是clear聲明你有清除屏幕,因此你看不到輸出對應於案件1

取出clear

繼續在循環前添加read聲明:

while [ 1 ] 
do 
    clear 
    echo "1. Display current users with session counts" 
    echo "2. Exit" 
    read -p "Enter your menu choice [1 - 2]:" choice 
    case $choice in 
     1) 
      one;; 
     2) 
      exit 0;; 
     *) read -p "Wrong selection!!! Press [Enter] to continue..." dummyChoice;; 
    esac 
    read # so you can see the output before the next iteation 
done 
+0

謝謝。它可以工作,但我怎樣才能清除屏幕呢?我希望它看起來不錯 – Tomala 2013-04-28 17:54:48

+0

在閱讀答案將等待你輸入的東西。一旦你按下一個鍵,那麼由於循環開始處的清晰語句,它會清除屏幕。 – 2013-04-28 17:56:52

+0

太棒了!再次感謝你 – Tomala 2013-04-28 17:58:26

1

可能在功能上開始「一」被添加明確表態工作