2013-04-28 4 views
0

Je fais un programme basé sur un menu et j'essaie d'appeler une fonction comme l'un des choix de menu. Dans ce cas, c'est le premier choix. Cependant si j'appuie sur 1 rien ne se passe, mais le script fonctionne (je l'ai testé). Quand j'appuie sur 2 programme existe et si j'appuie sur un nombre différent de 1 ou 2 cela donne un avertissement que ce n'est pas un choix valide.Menu ne veut pas fonctionner avec funcion

Pourriez-vous m'aider? Merci

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

Répondre

1

Votre script est bon. Juste que l'instruction clear vous avez efface l'écran et donc vous ne pouvez pas voir la sortie correspondant à l'affaire 1.

Retirez le clear ou

ajouter une déclaration read avant de poursuivre dans la boucle:

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

Merci. Cela fonctionne, mais comment puis-je effacer l'écran à la place? Je veux qu'il soit beau – Tomala

+0

Le 'read' comme dans la réponse vous attend pour entrer quelque chose. Une fois que vous appuyez sur une touche, l'écran est effacé * en raison de la déclaration claire au début de la boucle. –

+0

Super! Merci encore une fois – Tomala

1

ajouterons peut-être énoncé clair en début de fonction « One » travailler

Questions connexes