Created
November 26, 2017 09:52
-
-
Save Vdragon/a0df511641087bc88c98985c44976349 to your computer and use it in GitHub Desktop.
prompt_yes_or_no.function.bash
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Prompt for Yy/Nn, if not the expected answer ask again | |
# Parameter: A string of prompt; Default answer(Y/N) | |
# return 0 for yes and 1 for no | |
prompt_yes_or_no(){ | |
if [ ${#} -ne 2 ]; then | |
printf --\ | |
'Fatal: %s: Function paramater quantity mismatch! Please report bug\n'\ | |
"${FUNCNAME[0]}"\ | |
1>&2 | |
exit 1 | |
fi | |
local -r prompt="${1}"; shift | |
local -r default_answer="${1}" | |
local -i default_answer_exit_status | |
# Validate input | |
case "${default_answer}" in | |
Y|y) | |
default_answer_exit_status=0 | |
;; | |
N|n) | |
default_answer_exit_status=1 | |
;; | |
*) | |
printf --\ | |
'Fatal: %s: Wrong default_answer parameter format\n'\ | |
"${FUNCNAME[0]}"\ | |
1>&2 | |
exit 1 | |
;; | |
esac | |
# Do the job here | |
printf --\ | |
"%s"\ | |
"${prompt}" | |
while read -r answer; do | |
case ${#answer} in | |
0) # default | |
return ${default_answer_exit_status} | |
;; | |
1) | |
case "${answer}" in | |
n|N) | |
return 1 | |
;; | |
y|Y) | |
return 0 | |
;; | |
*) | |
printf --\ | |
"%s"\ | |
"${prompt}" | |
;; | |
esac | |
;; | |
*) | |
printf --\ | |
'Error: %s: Unexpected case occurred, please report bug.\n'\ | |
"${FUNCNAME[0]}"\ | |
1>&2 | |
exit 1 | |
;; | |
esac | |
done | |
}; declare -rf prompt_yes_or_no |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment