Criando ARRAYs linha por linha a partir de um arquivo

1. Criando ARRAYs linha por linha a partir de um arquivo

Fernanda Moraes
fermoraes

(usa Ubuntu)

Enviado em 10/12/2015 - 09:55h

Olá!
Estou estudando shellscript e estou com uma dúvida em um assunto que DEVERIA ser simples, mas se transformou em um pesadelo.
Tenho o seguinte arquivo:

prods.txt:
arroz 2 10 20
feijao 3 5 15
tomate 2 2 4

O que eu desejo fazer, é colocar isso dentro de um loop e em cada linha retornar cada coluna separada por espaço seu respectivo valor dentro do array. Exemplo:

${prods[0]} retornar arroz
${prods[1]} retornar 2
${prods[2]} retornar 10
${prods[3]) retornar 20

Na sequência do loop, pegar a segunda linha e retornar:
${prods[0]} retornar feijao
${prods[1]} retornar 3
${prods[2]} retornar 5
${prods[3]) retornar 15

e assim por diante...

O que eu tentei fazer:
#!/bin/bash

IFS="
"

for prods in $(cat prods.txt)
do
echo "Produto ${prods[0]}"
echo "Quantidade ${prods[1]}"
echo "Preco Unit ${prods[2]}"
echo "Total ${prods[3]}"
done

O problema disso, é que o bash colocou a linha inteira como se fosse apenas um item dentro do array, ou seja, o array inteiro é o ${prods[0]} e os demais não existem.

Obrigada

Fer


  


2. Re: Criando ARRAYs linha por linha a partir de um arquivo

Daniel Hilst Selli
danielhilst

(usa Arch Linux)

Enviado em 10/12/2015 - 10:12h

:)

#!/bin/sh

while read line; do
progs=($line)
echo "${progs[0]}"
echo "${progs[1]}"
echo "${progs[2]}"
done < prods.txt




3. Obrigada

Fernanda Moraes
fermoraes

(usa Ubuntu)

Enviado em 10/12/2015 - 10:17h

Desculpe pela resposta anterior... funcionou sim!! Obrigada!! Eu mantive sem querer o IFS e ele estava atrapalhando!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts