diff --git a/src/prompts.sh b/src/prompts.sh index ee11a58..4479115 100644 --- a/src/prompts.sh +++ b/src/prompts.sh @@ -25,7 +25,14 @@ _key_input() { # print new line for empty element in array # shellcheck disable=SC2231 -_new_line_foreach_item() { for _ in $1[@]; do echo -en "\n" >&2; done } +_new_line_foreach_item() { + count=0 + while [[ $count -lt $1 ]]; + do + echo "" >&2 + ((count++)) + done +} # display prompt text without linebreak _prompt_text() { @@ -122,7 +129,7 @@ list() { local opts=("${@:2}") local opts_count=$(($# -1)) - _new_line_foreach_item "${opts[*]}" + _new_line_foreach_item "${#opts[@]}" # determine current screen position for overwriting the options local lastrow; lastrow=$(_get_cursor_row) @@ -179,7 +186,7 @@ checkbox() { local opts; opts=("${@:2}") local opts_count; opts_count=$(($# -1)) - _new_line_foreach_item "${opts[*]}" + _new_line_foreach_item "${#opts[@]}" # determine current screen position for overwriting the options local lastrow; lastrow=$(_get_cursor_row) diff --git a/test.sh b/test.sh index 0e2e8f0..b9dfb08 100755 --- a/test.sh +++ b/test.sh @@ -25,7 +25,7 @@ log "$LOG_ERROR" "Error message" # PROMPTS # -options=("one" "two" "three" "four") +options=("one" "two" "three" "four" "a" "b" "c" "d" "e") validate_password() { if [ ${#1} -lt 10 ];then