diff options
-rw-r--r-- | lib/common.sh | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/common.sh b/lib/common.sh index 1488bd7..78f1c62 100644 --- a/lib/common.sh +++ b/lib/common.sh @@ -21,21 +21,30 @@ _OB_COMMON_SM='true' _OB_STACK_VARS= +_OB_SAVED_IFS= _ob_local() { # Push the variable list onto the stack. _OB_STACK_VARS="${_OB_STACK_VARS}|${*}" + + # Save the old IFS value, if any, and set it to its default. + _OB_SAVED_IFS="${IFS}" + unset IFS } _ob_return() { # Unset the variables at the top of the stack. + IFS=' ' unset -v ${_OB_STACK_VARS##*|} # Pop the variable list from the top of the stack. _OB_STACK_VARS="${_OB_STACK_VARS%|*}" + # Restore the saved IFS. + IFS="${_OB_SAVED_IFS}" + return ${1} } |