Read a variable from user input, limited to a set of options. Example:
$ ptxd_template_read_options "select your option" TYPE "option A" "option B" "option C" ptxdist: select option by number: ptxdist: [1] option A ptxdist: [2] option B ptxdist: [3] option C ptxdist: select your option................: 2 $ echo $TYPE option B The user can select 1, 2 or 3. Other input is not accepted. Signed-off-by: Bastian Krause <[email protected]> --- Introduced in v3. Used to ask user about HSM type in a later commit. --- scripts/lib/ptxd_lib_template.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/lib/ptxd_lib_template.sh b/scripts/lib/ptxd_lib_template.sh index f39e6e033..6b405763b 100644 --- a/scripts/lib/ptxd_lib_template.sh +++ b/scripts/lib/ptxd_lib_template.sh @@ -30,6 +30,32 @@ ptxd_template_read() { export "${2}" } export -f ptxd_template_read +# +# Read a variable from user input, limited to an array of options +# +# $1 prompt prefix +# $2 variable name +# $3..$n options +# +ptxd_template_read_options() { + local -a options=("${@:3}") + local i=1 + echo "${PTXDIST_LOG_PROMPT}select option by number:" + for option in "${options[@]}"; do + echo "${PTXDIST_LOG_PROMPT}[${i}] ${option}" + ((i++)) + done + while : ; do + ptxd_template_read "${1}" chosen + [ -n "${chosen}" ] && [ "${chosen}" -gt 0 ] && + [ "${chosen}" -le "${#options[@]}" ] && + break + + echo "${PTXDIST_LOG_PROMPT}invalid option" + done + export "${2}=${options[$chosen-1]}" +} +export -f ptxd_template_read_options ptxd_template_read_name() { ptxd_template_read "enter package name" package_name -- 2.27.0 _______________________________________________ ptxdist mailing list [email protected] To unsubscribe, send a mail with subject "unsubscribe" to [email protected]
