[prev in list] [next in list] [prev in thread] [next in thread]
List: bash-bug
Subject: Re: command substitution when timing grouped commands fails
From: Kerin Millar <kfm () plushkava ! net>
Date: 2023-09-07 15:06:10
Message-ID: 20230907160610.8c5c4ebcb9f120a4081d12a4 () plushkava ! net
[Download RAW message or body]
On Thu, 07 Sep 2023 05:50:49 -0700
hackerb9@member.fsf.org wrote:
> Configuration Information [Automatically generated, do not change]:
> Machine: x86_64
> OS: linux-gnu
> Compiler: gcc
> Compilation CFLAGS: -g -O2 -fstack-protector-strong -Wformat \
> -Werror=format-security -Wall uname output: Linux abyssal 6.4.0-3-amd64 #1 SMP \
> PREEMPT_DYNAMIC Debian 6.4.11-1 (2023-08-17) x86_64 GNU/Linux Machine Type: \
> x86_64-pc-linux-gnu
> Bash Version: 5.2
> Patch Level: 15
> Release Status: release
>
> Description:
>
> Bash gives a syntax error when using the $(...) form of
> command substitution and timing grouped commands.
>
> However, Bash works correctly when using the `...` form of
> command substitution.
>
>
> Repeat-By:
>
> The 'time' built-in command can measure a group of commands
> run in a subshell, for example:
>
> $ time (date; sleep 1)
> Thu Sep 7 05:19:21 AM PDT 2023
>
> real 0m1.005s
> user 0m0.003s
> sys 0m0.001s
>
> Attempting to save the output of time to a variable fails when
> using $(...) command substitution. For example,
>
> $ x=$( time ( date; sleep 1 ) 2>&1 )
> -bash: syntax error near unexpected token `date'
>
> However, old versions of bash (~2016) used to work correctly.
> And, indeed, even the current version of bash works if one
> uses backticks for command substitution.
>
> $ x=` time ( date; sleep 1 ) 2>&1 `
> $ # no error
>
> There should be no difference between $(...) and `...`.
This issue, which affects 5.2, was previously reported here:
https://lists.gnu.org/archive/html/bug-bash/2023-08/msg00124.html
It was fixed in the devel branch in the fashion described by:
https://lists.gnu.org/archive/html/bug-bash/2023-09/msg00013.html
The issue has not yet been addressed by any available 5.2 patchlevel. Should you wish \
to patch 5.2 yourself - as I did - apply the above-mentioned change while ignoring \
the addition of "case DOLBRACE:".
--
Kerin Millar
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic