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.

Error: No site found with the domain 'moodle.idph.com.br' (Learn more)