você está aqui: Home  → Arquivo de Mensagens

Lendo um arquivo para um vetor

Colaboração: Julio Cezar Neves

Data de Publicação: 23 de fevereiro de 2021

Falando do Bash 4.0, eis que ele surge com uma outra novidade: o comando intrínseco (builtin) mapfile, cuja finalidade é jogar um arquivo de texto inteiro para dentro de um vetor, sem loop ou substituição de comando.

— EPA! Isso deve ser muito rápido!

— E é. Faça os teste e comprove!

Exemplo:

$ cat frutas
abacate
maçã
morango
pera
tangerina
uva

$ mapfile vet < frutas  # Mandando frutas para vetor vet
$ echo ${vet[@]}        # Listando todos elementos de vet
abacate maçã morango pera tangerina uva

Obteríamos resultado idêntico se fizéssemos:

$ vet=($(cat frutas))

Porém isso seria mais lento porque a substituição de comando é executada em um subshell.

Uma outra forma de fazer isso que logo vem à cabeça é ler o arquivo com a opção -a do comando read. Vamos ver como seria o comportamento disso:

$ read -a vet < frutas
$ echo ${vet[@]}
abacate

Como deu para perceber, foi lido somente o primeiro registro de frutas.



Veja a relação completa dos artigos de Julio Cezar Neves