Precisa de script para exibir a mensagem de Uso se nenhuma opção for escolhida no menu

1

Eu consegui fazer meu programa funcionar bem, exceto por postar uma mensagem de uso, caso o usuário tente uma opção que não seja de menu. A mensagem que deve ser exibida se os usuários inserirem uma opção incorreta é a linha 75 "Usage: mgr [Start|Stop|Restart|Help]"

O script:

#!/bin/sh
#mgr prog
#Offers a choice of start, stop, and restart
#Executes choice then loops back to the menu

echo "==========================================" >> svclog
echo "  mgr" >> svclog
echo " mgr started " >> svclog

if [[ -f .running ]]
   then
      cat svclog
      sleep 10
fi

while [ true ]
do
   clear
   cat <<EOF

                =====
                M G R
                =====

                                $(date)

                  S -- Start svcd
                  X -- Stop svcd
                  R -- Restart svcd
                  H -- Save svclog to history file
                  I -- Help

                  q> quit

                 How may I assist you?

EOF


read ans

case $ans in
   S)  svcd
       cat svclog >> svc-hist
       rm svclog
       echo " Service starting." >> svclog
       ;;
   X)  pkill svcd
       echo " Service shutting down." >> svclog
       ;;
   R)  pkill svcd
       sleep 3
       svcd
       echo " Service has restarted." >> svclog
       ;;
   H)  cat svclog >> svc-hist
       rm svclog
       ;;
   I)  clear
       echo "
 The capital 'S' option will call the svcd file.
 The capital 'X' option will kill the svcd job.
 The capital 'R' option will kill the svcd jod, pause then call the svcd file.
 The capital 'H' option will append the svclog file log to the svc-hist file log.
 The 'I' option displays this message for 15 seconds.
 The lower case 'q' option quits this menu. "
       sleep 15
       ;;

   q)  echo " mgr stopped " >> svclog
       break
       ;;

else
   echo "Usage: mgr [Start|Stop|Restart|Help]" >> svclog

esac
done
clear
echo "
   "Louis, I think this is the beginning of a beautiful friendship."  ~Rick Blaine (Humphrey Bogart)
"
    
por HankG 20.04.2015 / 19:41

1 resposta

2

Em vez de

else
   echo "Usage: mgr [Start|Stop|Restart|Help]" >> svclog
esac

você precisa:

*) 
  echo "Usage: mgr [Start|Stop|Restart|Help]" >> svclog
esac

Ou se você quiser apenas imprimir em vez de salvar em um arquivo:

*) 
  echo "Usage: mgr [Start|Stop|Restart|Help]"
esac

*) in case declaração significa qualquer outro valor diferente do que foi mencionado acima.

Aqui está um bom tutorial sobre o uso de case .

    
por heemayl 20.04.2015 / 19:49