bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: for loop over parameter expansion of array can miss resulted empty l


From: Alex fxmbsw7 Ratchev
Subject: Re: for loop over parameter expansion of array can miss resulted empty list
Date: Mon, 21 Mar 2022 11:40:15 +0100

i solve this by shopt -s nullglob

On Sun, Mar 20, 2022, 22:07 Alexey via Bug reports for the GNU Bourne Again
SHell <bug-bash@gnu.org> wrote:

> Hello.
>
> Machine: x86_64
> OS: linux-gnu
> Compiler: gcc
> Compilation CFLAGS: -g -O2 -fstack-protector-strong -Wformat
> -Werror=format-security -Wall
> uname output: Linux alex 5.16.0-3-amd64 #1 SMP PREEMPT Debian 5.16.11-1
> (2022-02-25) x86_64 GNU/Linux
> Machine Type: x86_64-pc-linux-gnu
>
> Bash Version: 5.1
> Patch Level: 16
> Release Status: release
>
> Description:
>    If use 'Parameter Expansion', for example 'Remove matching suffix
> pattern', on array and try to iterate over expansion result with for
> loop, may occur that loop body will not be executed at all.
>
> Repeat-By:
>    Code: x=("/"); for i in "${x[@]%/}"; do echo "i is '$i'"; done
>    Result: none
>    Expected result: i is ''
>
> Expected behavior:
>    like for an array with empty element
>    Code: x=(""); for i in "${x[@]}"; do echo "i is '$i'"; done
>    Result: i is ''
>
>    another example, show that problems occurs only with empty resulted
> list
>    Code: x=("/" "//"); for i in "${x[@]%/}"; do echo "i is '$i'"; done
>    Result: i is ''
>            i is '/'
>
>
> Regards,
> Alexey
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]