how spooky , cant get read / mapfile to separate right very sad On Thu, Mar 30, 2023, 15:19 Felipe Contreras <felipe.contre...@gmail.com> wrote:
> Hi, > > Consider this example: > > IFS=, > str='foo,bar,,roo,' > printf '"%s"\n' $str > > There is a discrepancy between how this is interpreted between bash > and zsh: in bash the last comma doesn't generate a field and is > ignored, in zsh a last empty field is generated. Initially I was going > to report the bug in zsh, until I read what the POSIX specification > says about field splitting [1]. > > If we ignore all the complexity regarding IFS white spaces (since our > IFS doesn't have them), we arrive to this item: > > 3.b. Each occurrence in the input of an IFS character that is not > IFS white space, along with any adjacent IFS white space, shall > delimit a field, as described previously. > > Again, we ignore the white space stuff, which means "each occurrence > in the input of an IFS character shall delimit a field". So if *each > occurrence* of a comma shall delimit a field, the last comma should > delimit a field. We have four commas, therefore we should have five > fields. > > This is not what bash does. > > Shouldn't bash generate the last field? At least in POSIX mode (I > tried with `--posix` same output). > > Cheers. > > Obligatory stuff: > > * version: 5.1.16(1)-release > * platform: x86_64 Arch Linux > * compiler: gcc 12.2.1 > > [1] > https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_05 > > -- > Felipe Contreras > >