#Store and retrieve variables in bash (from file) # # *** Dynamic serialization in bash *** # The follwing example can keep track of PIDs of running background processes # The interresting part is the loading and the storage (1. and 3.) ! # *** 1. Load PIDs *** pidfile=/foo/bar [[ -e $pidfile ]] && . $pidfile #Source the file ! # *** 2. Do the work *** func1 () { varname="$1pid" mybin & export ${varname}=$! # Pid of last background process } func2 () { varname="$1pid" [[ ${!varname} ]] && kill ${!varname}} || echo "Fuck" unset ${varname} } if [[ $whatever ]]; then func1 d else func2 d fi # *** 3. Store back PIDs *** [[ -e $pidfile ]] && rm $pidfile # Clean out, only variables that are still set will be serialized for var in "d" "t" "q"; do varname="${var}pid" if [[ ${!varname} ]]; then declare -p ${varname} | cut -d ' ' -f 3- >> $pidfile # Here is the magic : "declare -p" handles the quotes for you :D fi done