Clarify (and improve) the escaping used in getconf.
[matthijs/upstream/backupninja.git] / lib / tools.in
index 888dad133b627b3bd0d4a12f565609d8c127b40f..a6dcf269ef2dfb6592b7247a779f6176ccaf8463 100644 (file)
@@ -53,8 +53,9 @@ function getconf() {
    # replace * with %, so that it is not globbed.
    ret="${ret//\\*/__star__}"
 
-   # this is weird, but single quotes are needed to
-   # allow for returned values with spaces. $ret is still expanded
-   # because it is in an 'eval' statement.
-   eval $1='$ret'
+   # We use escape the $ in $ret to delay expansion of $ret, so when $1
+   # is foo, eval sees foo=$ret and properly does the assignment
+   # (without the backslash, the right part of the assignment would be
+   # whatever is in ret and be subject to all kinds of expansion.
+   eval $1=\$ret
 }