De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Lendo um arquivo para um vetor

Colaboração: Julio Cezar Neves

Data de Publicação: 25 de outubro de 2023

Ainda 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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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