Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| shell_dump_function [2019/10/24 08:26] – created 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() { |
| - | { | + | if [ -n " |
| - | | + | declare -p ${1} 2> /dev/null | grep ' |
| - | do | + | |
| - | eval "echo ${v} = \$${v}"; | + | return 1 |
| + | } | ||
| + | |||
| + | is_hash() { | ||
| + | if [ -n "$BASH" | ||
| + | declare -p ${1} 2> /dev/null | grep ' | ||
| + | | ||
| + | return 1 | ||
| + | } | ||
| + | |||
| + | dump() { | ||
| + | for var; do | ||
| + | | ||
| + | echo ${var} = $(eval " | ||
| + | elif is_hash ${var} ; then | ||
| + | dump_hash ${var} | ||
| + | else | ||
| + | echo ${var} = $(eval " | ||
| + | fi | ||
| + | done | ||
| + | } | ||
| + | |||
| + | dump_hash() { | ||
| + | h=${1} | ||
| + | for k in $(eval "echo \${!${h}[@]}" | ||
| + | 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 | ||
| + | $ | ||
| </ | </ | ||