0

メニューベースのプログラムを実行しており、メニュー選択の 1 つとして関数を呼び出そうとしています。この場合は第一候補です。ただし、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

関数「One」作業の開始時に明確なステートメントを追加する場合があります

于 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 に答える