O readarray permite especificar o delimitador de linha?

1

No bash read builtin tem -d para especificar um delimitador de linha diferente de nova linha

O readarray fornece alguma maneira de especificar o delimitador de linha?

  • É correto que não tenha uma opção para esse propósito?
  • Existe uma variável padrão do shell para essa finalidade, semelhante a IFS para o delimitador de campo?

Obrigado.

Depois de ver o comentário da steeldriver,

$ bash --version
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ help readarray
readarray: readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
    Read lines from a file into an array variable.

    A synonym for 'mapfile'.

mas depois descobri:

$ help mapfile
mapfile: mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
    Read lines from the standard input into an indexed array variable.

    Read lines from the standard input into the indexed array variable ARRAY, or
    from file descriptor FD if the -u option is supplied.  The variable MAPFILE
    is the default ARRAY.

    Options:
      -d delim  Use DELIM to terminate lines, instead of newline
...
    
por Tim 17.11.2018 / 17:15

1 resposta

3

Desde a versão bash 4.4, sim, sim. Do anúncio de lançamento Lançamento do Bash-4.4 disponível :

The most notable new features are mapfile's ability to use an arbitrary record delimiter;

( readarray sendo um sinônimo para mapfile ). A descrição em man bash é

          -d     The first character of delim is used  to  terminate  each
                 input line, rather than newline.
    
por 17.11.2018 / 17:43

Tags