2013-04-28 23 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

可能在功能上开始“一”被添加明确表态工作