segunda-feira, 26 de julho de 2021

Lendo um arquivo para um vetor

 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.

Nenhum comentário:

Postar um comentário

RECOVER SENHA UBUNTU