Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
shell_dump_function [2019/10/24 08:26] – rpjday | shell_dump_function [2019/10/24 23:44] (current) – rpjday | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | To save piles of typing when debugging scripts: | + | To save piles of typing when debugging |
< | < | ||
- | dump () { | + | is_array() { |
- | for v in " | + | if [ -n " |
- | eval "echo ${v} = \$${v}"; | + | declare -p ${1} 2> /dev/null | grep ' |
+ | fi | ||
+ | return 1 | ||
+ | } | ||
+ | |||
+ | is_hash() { | ||
+ | if [ -n " | ||
+ | declare -p ${1} 2> /dev/null | grep ' | ||
+ | fi | ||
+ | return 1 | ||
+ | } | ||
+ | |||
+ | dump() { | ||
+ | for var; do | ||
+ | if is_array ${var} ; then | ||
+ | echo ${var} = $(eval | ||
+ | elif is_hash ${var} | ||
+ | dump_hash ${var} | ||
+ | | ||
+ | echo ${var} = $(eval " | ||
+ | fi | ||
+ | done | ||
+ | } | ||
+ | |||
+ | dump_hash() { | ||
+ | h=${1} | ||
+ | for k in $(eval " | ||
+ | echo " | ||
done | done | ||
} | } | ||
</ | </ | ||
- | Then: | + | First, it can dump regular variables: |
< | < | ||
- | $ dump PATH HOME | + | $ dump HOME HISTFILE HISTSIZE |
- | PATH = / | + | |
HOME = / | HOME = / | ||
+ | HISTFILE = / | ||
+ | HISTSIZE = 1000 | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | Next, dumping regular arrays: | ||
+ | |||
+ | < | ||
+ | $ people=(fred barney wilma betty) | ||
+ | $ dump people | ||
+ | people = fred barney wilma betty | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | Finally, dump a bash associative array: | ||
+ | |||
+ | < | ||
+ | $ declare -A wife | ||
+ | $ wife[fred]=wilma | ||
+ | $ wife[barney]=betty | ||
+ | $ dump wife | ||
+ | wife[fred] = wilma | ||
+ | wife[barney] = betty | ||
+ | $ | ||
</ | </ |