Mapping function outputs to names
Setting variables to the output of some function or command where the variable names, function names are dynamic is useful for reading in a configuration file or string.
If you can construct the variable and function name into strings, use the following vset function:
function vset {
for p in "$@"; do
nm_fn="fn_${p}"
nm_var="var_${p}"
eval "$nm_var=\$($nm_fn)"
done
}
Calling vset like:
vset ssh git pwd
assigns three variables like the following hardcoded assignments:
var_ssh=$(fn_ssh)
var_git=$(fn_git)
var_pwd=$(fn_pwd)
Dynamic variable names are good for plugins. Say my cue library for shell prompts accepts variables named $vargit, $varssh, vset can set those variables by calling prompt-git, prompt-ssh, whether they are just in the $PATH or functions defined outside of my cue library.
Written by Tom, Bom
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Related Tags
#bash
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#