From: Matthijs Kooijman Date: Wed, 17 Mar 2010 21:42:44 +0000 (+0100) Subject: Clarify (and improve) the escaping used in getconf. X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=2e919339435fb77e0b7cf20f2f6e0bee4005b1ee;p=matthijs%2Fupstream%2Fbackupninja.git Clarify (and improve) the escaping used in getconf. The code is effectively identical, but a bit clearer. The comment above it should now make it clear what eval is seeing exactly. --- diff --git a/lib/tools.in b/lib/tools.in index 888dad1..a6dcf26 100644 --- a/lib/tools.in +++ b/lib/tools.in @@ -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 }