você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Lendo um arquivo para um vetor

Por Júlio Cezar Neves

Data de Publicação: 21 de Janeiro de 2010

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.

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna