você está aqui: Home → Colunistas → Cantinho do Shell
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!
$ 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.