diff --git a/lib/functions/logging/capture.sh b/lib/functions/logging/capture.sh index 880eda6e9..c10f2286c 100644 --- a/lib/functions/logging/capture.sh +++ b/lib/functions/logging/capture.sh @@ -9,24 +9,24 @@ function do_capturing_defs() { # make sure to local with a value, otherwise they will appear in the list... - local pre_exec_vars="" post_exec_vars="" new_vars_list="" onevar="" all_vars_array=() - pre_exec_vars="$(compgen -A variable | grep -E '[[:upper:]]+' | grep -v -e "^BASH_" | sort)" + declare pre_exec_vars="" post_exec_vars="" new_vars_list="" onevar="" all_vars_array=() + pre_exec_vars="$(compgen -A variable)" # run parameters passed. if this fails, so will we, immediately, and not capture anything correctly. # if you ever find stacks referring here, please look at the caller and $1 "$@" - post_exec_vars="$(compgen -A variable | grep -E '[[:upper:]]+' | grep -v -e "^BASH_" | sort)" - new_vars_list="$(comm -13 <(echo "$pre_exec_vars") <(echo "${post_exec_vars}"))" + post_exec_vars="$(compgen -A variable)" + + new_vars_list="$(comm -13 <(echo "$pre_exec_vars" | grep -E '[[:upper:]]+' | grep -v -e "^BASH_" | sort) <(echo "${post_exec_vars}" | grep -E '[[:upper:]]+' | grep -v -e "^BASH_" | sort))" for onevar in ${new_vars_list}; do - # @TODO: rpardini: handle arrays and maps specially? all_vars_array+=("$(declare -p "${onevar}")") done - #IFS=$'\n' - export CAPTURED_VARS="${all_vars_array[*]}" - #display_alert "Vars defined during ${*@Q}:" "${CAPTURED_VARS}" "debug" - unset all_vars_array post_exec_vars new_vars_list pre_exec_vars onevar join_by + + declare -g CAPTURED_VARS_NAMES="${new_vars_list}" + declare -ga CAPTURED_VARS_ARRAY=("${all_vars_array[@]}") + unset all_vars_array post_exec_vars new_vars_list pre_exec_vars onevar return 0 # return success explicitly , preemptively preventing short-circuit problems. }