Search code examples
bashshellunixcommand-linesh

How to prompt for yes or no in bash?


How do I ask a yes/no type question in Bash?

I ask the question... echo "Do you like pie?"

And receive the answer... read pie

How do I do something if the answer is yes, or starts with y (so yes and yeah, etc, will work too).


Solution

  • I like to use the following function:

    function yes_or_no {
        while true; do
            read -p "$* [y/n]: " yn
            case $yn in
                [Yy]*) return 0  ;;  
                [Nn]*) echo "Aborted" ; return  1 ;;
            esac
        done
    }
    

    So in your script you can use like this:

    yes_or_no "$message" && do_something
    

    In case the user presses any key other than [yYnN] it will repeat the message.