Problemas para o menu funcionar

1

Atualmente, estou tentando criar um menu para minha turma Into to Unix. O problema que estou tendo agora é que, quando eu insiro algo no script, minha entrada aparece em vez de o script responder como deve se basear na entrada. Mas baseado no livro eu deveria estar fazendo certo desde que eu segui o formato que o caso é usado, ou assim eu penso? O que eu precisaria modificar para fazer isso funcionar? Além disso, o shell que estou usando é bash.

Esta é a tarefa em que estou trabalhando:

  1. Escreva um script de caso que forneça as opções para fazer o seguinte:

    a. Listar os usuários do arquivo / etc / passwd que possuem um número de identificação de quatro dígitos maior que 999.

    b. Mostrar apenas o mês, dia e ano do comando de data.

    c. Pegue o arquivo de escolha do usuário e mostre todas as letras em maiúsculas.

Aqui está o código que estou usando no momento

clear
if [ "$#" -ne 1 ]; then
    echo Press 1 for a list of users with the UID greater than 999
    echo Press 2 for the Day, Month, and Year
    echo Press 3 to show a file name from lower case to upper case
    read a
    exit
fi

case "$1" in
    1) awk -F: '($3>=999)  && ($3!=9999)' /etc/passwd ;;
    2) echo Todays date is: ; date | awk '{print $2, $3, $6}' ; sleep 1 ;;
    3) ls -aC | more ; echo What file would you like to change from lower case to uppercase?  ;read y ;sleep 1 ; clear ; echo $y | tr '[:lower:]' '[:upper:]' ; sleep 1 ;;
    *) echo Invalid input
esac
    
por user52710 21.11.2013 / 09:23

1 resposta

1

Como @manatwork observou nos comentários, você não quer exit logo após o usuário digitar sua escolha. Além disso, sua instrução case opera em $1 , o primeiro argumento do script (ou o primeiro parâmetro posicional na linguagem Bash). Logicamente, não é isso que você quer. Você read da escolha do usuário em a , e é isso que você quer que seja case ing:

case "$a"
in
...
    
por 21.11.2013 / 12:34

Tags