#!/bin/sh # Define ask_yn, which asks a yes or no question and defaults to the specified choice. # Outputs 1 for yes and 0 for no ask_yn() { default=${2:-"y"} default=$(printf "%s" "$default" | tr '[:upper:]' '[:lower:]') # Set prompt string case "$default" in y) prompt="Y/n" ;; n) prompt="y/N" ;; *) printf "Invalid default answer\n"; exit 1 ;; esac while true; do trap 'stty sane; exit' INT printf "%s (%s): " "$1" "$prompt" stty raw -echo answer=$(head -c 1) || exit stty -echo printf "\n" case "$answer" in "" ) answer="$default"; break;; y|Y) answer="y"; break;; n|N) answer="n"; break;; esac done case "$answer" in y|Y) printf "1";; n|N) printf "0";; esac }