2013-04-28 4 views
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 

답변

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

+0

답안에서'read'는 당신이 무언가를 입력 할 때까지 기다릴 것이다. 키를 누르면 루프 시작시 명확한 명령문으로 인해 화면이 지워집니다. –

+0

좋아요! 한번 더 감사드립니다. – Tomala

1

은 "하나"기능의 시작에 명확한 문을 추가 할 수 있습니다

관련 문제