Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

1. Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 09:26h

Bom dia pessoal!
Estou com o seguinte problema; quando leio um arquivo de texto (num.txt) fazendo um laço FOR, eu consigo retornar todos os valores, porém, quando tento resgatar um valor/posição especifica desse vetor gerado, eu não consigo. Alguém pode me ajudar?
Segue meu script atual com os varios problemas que vocês podem encontrar pois, essa linguagem é nova pra mim,


#!/bin/bash

ARQUIVO=/num.txt

for i in $(cat $ARQUIVO);
do
echo ${i[1]}
done


out=> teste.sh: 7: teste.sh: Bad substitution


  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 12/12/2018 - 11:44h

V aí

#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


3. Re: Ler txt atribuir valores a variavel resgatando em um FOR

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 12/12/2018 - 11:13h

Fica complicado te ajudar se você não explicar melhor o que deseja fazer.
Dê um exemplo de como está o arquivo.txt e que valores vc quer pegar!!!

De cara dar pra ver que isso "echo ${i[1]}" não procede, pois o $i não é um array.
Você precisa declarar o "i" como array, se for o caso.


4. Re: Ler txt atribuir valores a variavel resgatando em um FOR

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 12:13h

Ryuk escreveu:

Fica complicado te ajudar se você não explicar melhor o que deseja fazer.
Dê um exemplo de como está o arquivo.txt e que valores vc quer pegar!!!

De cara dar pra ver que isso "echo ${i[1]}" não procede, pois o $i não é um array.
Você precisa declarar o "i" como array, se for o caso.

Putz, desculpas, me esqueci de mostrar isso.
O TXT está assim:

658
686
678

Achei que colocando num for o I seria um array



5. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 12:15h

Mauriciodez escreveu:

V aí

#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Amigo, estou no horário de almoço, retornando para minha máquina eu já dou um feedback


6. Re: Ler txt atribuir valores a variavel resgatando em um FOR

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 12:17h

Gacha escreveu:

Ryuk escreveu:

Fica complicado te ajudar se você não explicar melhor o que deseja fazer.
Dê um exemplo de como está o arquivo.txt e que valores vc quer pegar!!!

De cara dar pra ver que isso "echo ${i[1]}" não procede, pois o $i não é um array.
Você precisa declarar o "i" como array, se for o caso.

Putz, desculpas, me esqueci de mostrar isso.
O TXT está assim:

658
686
678

Achei que colocando num for o I seria um array

Seguindo esse padrão de TXT, eu queria pegar somente um desses valores entendeu?
Sabendo como pega algum desses valores, já consigo prosseguir com o resto do meu código



7. Re: Ler txt atribuir valores a variavel resgatando em um FOR

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 15:02h

Gacha escreveu:

Mauriciodez escreveu:

V aí

#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Amigo, estou no horário de almoço, retornando para minha máquina eu já dou um feedback


Testei exatamente como o exemplo, sem sucesso.

saida:
teste.sh: 5: teste.sh: readarray: not found
teste.sh: 6: teste.sh: Bad substitution



8. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 12/12/2018 - 15:11h

é melhor vc rever aí pq aqui funciona !!!

mauricio@phantom ~ $ cat num.txt
1
2
3
4
5
6
7
8
9
mauricio@phantom ~ $ cat sh.sh
#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}
mauricio@phantom ~ $ ./sh.sh
2
mauricio@phantom ~ $


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



9. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 15:29h

Mauriciodez escreveu:

é melhor vc rever aí pq aqui funciona !!!

mauricio@phantom ~ $ cat num.txt
1
2
3
4
5
6
7
8
9
mauricio@phantom ~ $ cat sh.sh
#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}
mauricio@phantom ~ $ ./sh.sh
2
mauricio@phantom ~ $


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Cara, não sei nem como te relatar isso mas...
se eu rodar:
sh teste.sh
ele me traz aquele erro e se eu rodar:
./teste.sh
ele funciona, sei que é pedir muito mas, imagina o por que?


10. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Matheus
pylm

(usa Gentoo)

Enviado em 12/12/2018 - 15:32h

O sh do debian não é o bash por padrão, talvez a implementação usada não tenha suporte ao tal readarray.

Pode confirmar assim:


ls -lah /bin/sh





11. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 15:33h

Bom, agradeço a atenção ao galera e desculpa por algum erro besta meu rsrs.
Pra quem quiser, o meu problema foi solucionado com a seguinte rotina:

#!/bin/bash
readarray txt < num.txt
echo ${txt[1]}



12. Re: Ler txt atribuir valores a variavel resgatando em um FOR [RESOLVIDO]

Ezequiel de Jesus Gacha
Gacha

(usa Debian)

Enviado em 12/12/2018 - 15:35h

pylm escreveu:

O sh do debian não é o bash por padrão, talvez a implementação usada não tenha suporte ao tal readarray.

Pode confirmar assim:


ls -lah /bin/sh




Putz, valeu pela dica!




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts