On Thu, Jun 25, 2015 at 12:07 PM, Patrick Burroughs <[email protected]> wrote:
> On Thu, 25 Jun 2015 17:01:02 +0200 Johannes Löthberg > <[email protected]> wrote: > > > On 25/06, Patrick Burroughs wrote: > > >On Thu, 25 Jun 2015 13:17:49 +0100 Mauro Santos > > ><[email protected]> wrote: > > >> Wouldn't just > > >> > > >> local tarball="${source_$CARCH[0]}" > > >> > > >> or something very similar do the job? > > > > > >I believe you need: > > > > > >local tarball=$(eval "echo \${source_${CARCH}[0]}") > > > > > > > Why do you believe that? > > A quick google and some personal testing showed me that the former > doesn't work and the latter does, because bash doesn't interpolate > variables in the middle of another variable like that; you need to use > eval to make a second pass for it to work. Rather hacky, though, and I > see no point in using it over the conditional construct proposed > earlier — I just hate to see a suggestion that doesn't work out there. > You'd be better off avoiding the eval and using indirection: local source_array="source_$CARCH" local tarball="${!source_array[0]}"
