#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: prompt STRING|- prompt -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message STRING the text to be displayed in the prompt Display a prompt and return a value corresponding to the response. EOF } assert_arg() { if [ -z "$1" ]; then printf 'Missing %s.\n\n' "$2" >&2 usage >&2 exit 2 fi } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) STRING="${1:-}" assert_arg "$STRING" 'STRING' printf '%s' "$STRING" printf ' [Y/n]: ' read -r yesno if [ "$yesno" != 'n' ] && [ "$yesno" != 'N' ]; then exit 0 else exit 1 fi