[Libguestfs] [nbdkit PATCH] tests: Better quoting for cleanup_fn

Richard W.M. Jones rjones at redhat.com
Tue Jul 26 10:32:17 UTC 2022


On Tue, Jul 26, 2022 at 12:22:11PM +0200, Laszlo Ersek wrote:
> On 07/26/22 12:17, Laszlo Ersek wrote:
> > On 07/26/22 10:11, Richard W.M. Jones wrote:
> >> On Tue, Jul 26, 2022 at 07:13:41AM +0200, Laszlo Ersek wrote:
> >>> On 07/25/22 16:02, Eric Blake wrote:
> >>>> +    for (( _i = 0; _i < $_cleanup_hook_count; ++_i )); do
> >>>> +        local -n _hook=_cleanup_hook$_i
> >>>> +        "${_hook[@]}"
> >>>
> >>> BTW, "nameref" variables seem like a relatively new addition to bash;
> >>> for example RHEL7 does not have them. Interestingly, the RHEL7 manual
> >>> also does not document a nameref-like construct that *does* work in
> >>> RHEL7, namely:
> >>>
> >>> $ bar=foo
> >>> $ baz=bar
> >>> $ echo ${!baz}
> >>> foo
> >>
> >> Indeed it doesn't work on RHEL 7, eg:
> >>
> >> $ make && make -C tests check TESTS=test-eflags.sh
> >>
> >> leaves tests/eflags.{err,out} around.
> >>
> >> Do you have a patch for this?
> > 
> > This should work:
> > 
> > local hook=_cleanup_hook$_i
> > eval "\${${hook}[@]}"
> 
> Sigh, nesting quoting is always fun; I forgot the outermost quotes. So
> please make that:
> 
> eval "\"\${${hook}[@]}\""

So after quotes and variables are done this expands to:

  eval "${_cleanup_hook_X[@]}"

It looks right to me -- and works in my limited test -- but I guess
I'll let Eric decide on this one.

Rich.

> > 
> > Thanks
> > Laszlo
> > 
> >>
> >> [...]
> >>> I wonder if the bash release notes mention "nameref" as a more flexible
> >>> version of "indirect expansion"... Hm, nameref was new in bash-4.3
> >>> <https://lwn.net/Articles/589566/>, and RHEL7 has bash-4.2.46-35.el7_9,
> >>> so the lack of "nameref" is understandable (not that it matters for
> >>> upstream nbdkit :)); indirect expansion is not mentioned however as a
> >>> similar feature.
> >>
> >> Actually I'd like to keep things working on RHEL 7 if possible.  It's
> >> still a widely used RHEL release.
> >>
> >> Rich.
> >>
> > 

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top


More information about the Libguestfs mailing list