Ubuntu – Is there any default function/utility to prompt the user for yes/no in a Bash script

bashcommand line

Sometimes I need to ask the user for yes/no to confirm something.

Usually I use something like this:

# Yes/no dialog. The first argument is the message that the user will see.
# If the user enters n/N, send exit 1.
check_yes_no(){
    while true; do
        read -p "$1" yn
        if [ "$yn" = "" ]; then
            yn='Y'
        fi
        case "$yn" in
            [Yy] )
                break;;
            [Nn] )
                echo "Aborting..."
                exit 1;;
            * )
                echo "Please answer y or n for yes or no.";;
        esac
    done;
}

Is there a better way to do it? Is this utility maybe already in my /bin folder?

Best Answer

  • Ah, there is something built-in: zenity is a graphical dialog program:

    if zenity --question --text="Is this OK?" --ok-label=Yes --cancel-label=No
    then
        # user clicked "Yes"
    else
        # user clicked "No"
    fi
    

    In addition to zenity, you can use one of:

    if dialog --yesno "Is this OK?" 0 0; then ...
    if whiptail --yesno "Is this OK?" 0 0; then ...
    
  • Related Question