eval
Same Process ID
main() {
echo "Process id: $$"
eval "echo 'Process id in eval: $$'"
}
main "${@}" || exit 1
Process id: 26179
Process id in eval: 26179
Able to modify env variables of caller
set_SOME_VAR(){
SOME_VAR="some other value"
}
main() {
SOME_VAR="some value"
echo "before eval SOME_VAR=${SOME_VAR}"
eval "set_SOME_VAR"
echo "after eval SOME_VAR=${SOME_VAR}"
}
main "${@}" || exit 1
before eval SOME_VAR=some value
after eval SOME_VAR=some other value