0

我正在做一个基于菜单的程序,我试图调用一个函数作为菜单选项之一。在这种情况下,它是首选。但是,如果我按 1 没有任何反应,但脚本有效(我已经测试过了)。当我按 2 程序存在并且如果我按任何不同于 1 或 2 的数字时,它会发出警告,表明它不是一个有效的选择。

你们能帮忙吗?谢谢你

#!/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
4

2 回答 2

1

可能在功能“一”工作的开始添加明确的声明

于 2013-04-29T15:10:20.373 回答
1

你的脚本很好。只是clear您的语句清除了屏幕,因此您看不到与 case 对应的输出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
于 2013-04-28T17:52:08.363 回答