On Thu, Nov 09, 2023 at 10:17:35PM +0100, Andreas Schwab wrote:
> On Nov 09 2023, Greg Wooledge wrote:
> 
> >     re='^\[([0-9]+)\]'
> >     jobspecs=()
> >     while IFS= read -r line; do
> >         if [[ $line =~ $re ]]; then
> >             jobspecs+=( "%${BASH_REMATCH[1]}" )
> >         fi
> >     done < <(jobs -l)
> 
> That fails for multi-line commands that happen to contain matches for
> re.
> 
> $ (sleep 100; printf $'\n[100]\n') &

Fair enough.  I believe *nothing* would work in that case; the output of
"jobs -l" cannot be safely parsed in its current form.

Adding a NUL-delimited output option might work around that, but if we're
modifying the jobs builtin, we might as well just add the -i or -j option
instead.

Reply via email to