`bb_array_insert` not handling `"` in string
Writing a "
to an array position with bb_array_insert
throws the following error:
garfield@aglio:/tmp$ ./bugexample.bash
declare -a array=([0]="null" [1]="eins" [2]="zwei" [3]="drei")
declare -a array=([0]="null" [1]="eins" [2]="einsplus" [3]="zwei" [4]="drei")
declare -a array=([0]="null" [1]="eins" [2]="einsplus" [3]="zwei" [4]="!'#\$%&()*+,-./:;<=>?@[\\]^_{|}~" [5]="drei")
declare -a array=([0]="null" [1]="eins" [2]="einsplus" [3]="zwei" [4]="!'#\$%&()*+,-./:;<=>?@[\\]^_{|}~" [5]="drei" [6]="\"")
declare -a array=([0]="\"")
/usr/local/libexec/bash-base.bash: eval: line 1239: unexpected EOF while looking for matching `"'
bugexample.bash: _bb_err_exit_trap: unexpected exit/error near 'eval "$_array_vn[\$_key]=\"$_value\""', status=2, trap=EXIT
bugexample.bash: Execution at file "/usr/local/libexec/bash-base.bash", line 3505, function "_bb_err_exit_trap"
bugexample.bash: Called from file "/usr/local/libexec/bash-base.bash", line 1, function "bb_array_insert"
bugexample.bash: Called from file "./bugexample.bash", line 31
Example Code
garfield@aglio:/tmp$ cat bugexample.bash
#!/usr/bin/env bash
# shellcheck disable=SC1091
source /usr/libexec/bash-base.bash || {
echo "$0: fatal error:" \
"failed to source /usr/libexec/bash-base.bash" >&2
exit 1
}
declare specialset specialset_broken
declare -a array
specialset="!'#$%&()*+,-./:;<=>?@[\]^_{|}~"
specialset_broken='"'
array=(null eins zwei drei)
declare -p array
bb_array_insert array 2 "einsplus"
declare -p array
bb_array_insert array 4 "$specialset"
declare -p array
bb_array_add array "$specialset_broken"
declare -p array
bb_array_set array "$specialset_broken"
declare -p array
bb_array_insert array 4 "$specialset_broken"
declare -p array
bb_quit
Edited by Martin Borer