Bash Menu issue / question?

0

Existe outro tópico para este tópico, mas está fechado. Eu gostaria de revisitar isso. Eu estou tentando escrever um script de utilitário para mim. No entanto eu não sou um programador, então eu queria obter algum feed de volta. Embora eu aprecie os outros tentando ajudar, eu não quero sair em uma tangente e tenho que ler um monte de coisas. Minha necessidade é muito específica.

PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option3" "Quit")
select opt in "${options[@]}"
do
    case $opt in


 if [ "$RESP" = "y" ]; then
                action here
        else
                echo "Thank you."
        sleep 2
    exit;  
fi

;;
        "Option 2")
            echo "you chose choice 2"
            ;;
        "Option 3")
            echo "you chose choice 3"
            ;;
        "Quit")
            break
            ;;
        *) echo invalid option;;
    esac
done

Como faço para sair da saída; ou fi de volta ao menu?

Muito obrigado,

    
por nexusguy59 16.03.2013 / 16:52

1 resposta

2

Primeiro, você está perdendo um caso "Option 1") antes de seu if . E "Option3" na sua lista de opções não possui um espaço: deve ser "Option 3" .

Além disso, não consigo entender sua pergunta. Qual é o problema? Uma vez que estes são corrigidos, parece funcionar para mim. Abaixo está um teste. Para esclarecer, exit sai do script e retorna o usuário ao prompt do shell. Se você quiser ficar no script, não use exit .

ace@ace2:~$ ./test.sh
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice: 1
Thank you.
ace@ace2:~$ RESP="y" ./test.sh
1) Option 1
2) Option 2
3) Option3
4) Quit
Please enter your choice: 1
you chose choice 1
Please enter your choice: 2
you chose choice 2
Please enter your choice: 3
you chose choice 3
Please enter your choice: 4
ace@ace2:~$

Aqui está o código:

#!/bin/bash
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
    case $opt in

    "Option 1")
        if [ "$RESP" = "y" ]; then
            echo "you chose choice 1"
        else
            echo "Thank you."
            sleep 2
            exit
        fi
        ;;
    "Option 2")
        echo "you chose choice 2"
        ;;
    "Option 3")
        echo "you chose choice 3"
        ;;
    "Quit")
        break
        ;;
    *) 
        echo invalid option
        ;;
    esac
done
    
por IlluminAce 16.03.2013 / 17:34