Ler um arquivo e executar os comandos dele [RESOLVIDO]

1. Ler um arquivo e executar os comandos dele [RESOLVIDO]

Manucao
manuca0

(usa Outra)

Enviado em 09/06/2022 - 17:26h

Fala, galera! Td bem?

Eu tenho um shell que faz uma consulta no banco e retorna, num arquivo .txt, os dados assim:

mv /home/manuca0/shells/*resultado1* /home/manuca0/shells/extraidos
mv /home/manuca0/shells/*outroResultado* /home/manuca0/shells/extraidos
...

Queria saber como fazer com que um shell:
1. Execute esse shell que faz a consulta e cria o arquivo txt
2. Leia cada linha desse arquivo txt e execute o comando dela (no caso, o mv ...)

Eu sei que para ler a linha eu posso fazer um "while read line; do", só não tô conseguindo fazer esse passo 1 e 2 em um único shell...

valew!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/06/2022 - 19:58h

manuca0 escreveu:

Fala, galera! Td bem?

Eu tenho um shell que faz uma consulta no banco e retorna, num arquivo .txt, os dados assim:

mv /home/manuca0/shells/*resultado1* /home/manuca0/shells/extraidos
mv /home/manuca0/shells/*outroResultado* /home/manuca0/shells/extraidos
...

Queria saber como fazer com que um shell:
1. Execute esse shell que faz a consulta e cria o arquivo txt
2. Leia cada linha desse arquivo txt e execute o comando dela (no caso, o mv ...)

Eu sei que para ler a linha eu posso fazer um "while read line; do", só não tô conseguindo fazer esse passo 1 e 2 em um único shell...

valew!

Boa noite Manuca,
Segue:
cat arq.txt
date
cal
free
---------------------------------------------------------------------------------------------------------------
while read line;do
eval "$line";
done<arq.txt

Ou
eval "$(cat arq.txt)" 

Ou
awk 'system($0)' arq.txt 

Nos três casos, os comandos do arquivo serão executados.
É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Ler um arquivo e executar os comandos dele [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 09/06/2022 - 21:21h


Alternativamente vc pode colocar na primeira linha:
#!/bin/bash
Salvar e tornar executável com
chmod +x arquivo.txt


4. Re: Ler um arquivo e executar os comandos dele [RESOLVIDO]

Manucao
manuca0

(usa Outra)

Enviado em 09/06/2022 - 23:22h


msoliver escreveu:

manuca0 escreveu:

Fala, galera! Td bem?

Eu tenho um shell que faz uma consulta no banco e retorna, num arquivo .txt, os dados assim:

mv /home/manuca0/shells/*resultado1* /home/manuca0/shells/extraidos
mv /home/manuca0/shells/*outroResultado* /home/manuca0/shells/extraidos
...

Queria saber como fazer com que um shell:
1. Execute esse shell que faz a consulta e cria o arquivo txt
2. Leia cada linha desse arquivo txt e execute o comando dela (no caso, o mv ...)

Eu sei que para ler a linha eu posso fazer um "while read line; do", só não tô conseguindo fazer esse passo 1 e 2 em um único shell...

valew!

Boa noite Manuca,
Segue:
cat arq.txt
date
cal
free
---------------------------------------------------------------------------------------------------------------
while read line;do
eval "$line";
done<arq.txt

Ou
eval "$(cat arq.txt)" 

Ou
awk 'system($0)' arq.txt 

Nos três casos, os comandos do arquivo serão executados.
É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


Marcelo,
tentei a implementação com o while e ele não lê nada... o shell ficou assim:

#/bin/bash
#Declare Variables

dirFile=/home/manuca0/shells/
inputFile="arquivo.out"
redirectFile="saida.txt"

echo "começando a leitura do arquivo"

vFile=`cat $dirFile$inputFile |wc -l`

while read line; do
eval "$line";
done < $inputDir$redirectFile

Tem algo errado?
Uma outra dúvida: esse < do done faz exatamente o que?

obs: o arquivo.out é o arquivo que possui os comandos citados anteriormente



5. Re: Ler um arquivo e executar os comandos dele [RESOLVIDO]

Manucao
manuca0

(usa Outra)

Enviado em 09/06/2022 - 23:23h


leandropscardua escreveu:


Alternativamente vc pode colocar na primeira linha:
#!/bin/bash
Salvar e tornar executável com
chmod +x arquivo.txt



Então,
a ideia é ser algo autômático, aí mudar sempre a configuração do arquivo manualmente quebraria isso..


6. Re: Ler um arquivo e executar os comandos dele

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/06/2022 - 00:03h

manuca0 escreveu:


msoliver escreveu:

manuca0 escreveu:

Fala, galera! Td bem?

Eu tenho um shell que faz uma consulta no banco e retorna, num arquivo .txt, os dados assim:

mv /home/manuca0/shells/*resultado1* /home/manuca0/shells/extraidos
mv /home/manuca0/shells/*outroResultado* /home/manuca0/shells/extraidos
...

Queria saber como fazer com que um shell:
1. Execute esse shell que faz a consulta e cria o arquivo txt
2. Leia cada linha desse arquivo txt e execute o comando dela (no caso, o mv ...)

Eu sei que para ler a linha eu posso fazer um "while read line; do", só não tô conseguindo fazer esse passo 1 e 2 em um único shell...

valew!

Boa noite Manuca,
Segue:
cat arq.txt
date
cal
free
---------------------------------------------------------------------------------------------------------------
while read line;do
eval "$line";
done<arq.txt

Ou
eval "$(cat arq.txt)" 

Ou
awk 'system($0)' arq.txt 

Nos três casos, os comandos do arquivo serão executados.
É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


Marcelo,
tentei a implementação com o while e ele não lê nada... o shell ficou assim:

#/bin/bash
#Declare Variables

dirFile=/home/manuca0/shells/
inputFile="arquivo.out"
redirectFile="saida.txt"

echo "começando a leitura do arquivo"

vFile=`cat $dirFile$inputFile |wc -l`

Tem algo errado?
Uma outra dúvida: esse < do done faz exatamente o que?

obs: o arquivo.out é o arquivo que possui os comandos citados anteriormente

Sim Manuca tem erro.....
done<arquivo_com_os_comandos 

Esse "direcionamento", indica de qual arquivo o while vai ler as "linhas"

while read line;do
eval "$line";
done<arquivo.out

----------------------------------------------------------------------------------------------------------------
A forma mais prática de executar os comandos do arquivo, é:
. arquivo.txt

ponto_espaço_arquivo.txt
O Underline é só para facilitar a leitura :)
Sem eval, laço, read, awk, cat, permissão, etc...
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



7. Re: Ler um arquivo e executar os comandos dele [RESOLVIDO]

Manucao
manuca0

(usa Outra)

Enviado em 10/06/2022 - 08:38h


msoliver escreveu:

manuca0 escreveu:


msoliver escreveu:

manuca0 escreveu:

Fala, galera! Td bem?

Eu tenho um shell que faz uma consulta no banco e retorna, num arquivo .txt, os dados assim:

mv /home/manuca0/shells/*resultado1* /home/manuca0/shells/extraidos
mv /home/manuca0/shells/*outroResultado* /home/manuca0/shells/extraidos
...

Queria saber como fazer com que um shell:
1. Execute esse shell que faz a consulta e cria o arquivo txt
2. Leia cada linha desse arquivo txt e execute o comando dela (no caso, o mv ...)

Eu sei que para ler a linha eu posso fazer um "while read line; do", só não tô conseguindo fazer esse passo 1 e 2 em um único shell...

valew!

Boa noite Manuca,
Segue:
cat arq.txt
date
cal
free
---------------------------------------------------------------------------------------------------------------
while read line;do
eval "$line";
done<arq.txt

Ou
eval "$(cat arq.txt)" 

Ou
awk 'system($0)' arq.txt 

Nos três casos, os comandos do arquivo serão executados.
É isso....

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


Marcelo,
tentei a implementação com o while e ele não lê nada... o shell ficou assim:

#/bin/bash
#Declare Variables

dirFile=/home/manuca0/shells/
inputFile="arquivo.out"
redirectFile="saida.txt"

echo "começando a leitura do arquivo"

vFile=`cat $dirFile$inputFile |wc -l`

Tem algo errado?
Uma outra dúvida: esse < do done faz exatamente o que?

obs: o arquivo.out é o arquivo que possui os comandos citados anteriormente

Sim Manuca tem erro.....
done<arquivo_com_os_comandos 

Esse "direcionamento", indica de qual arquivo o while vai ler as "linhas"

while read line;do
eval "$line";
done<arquivo.out

----------------------------------------------------------------------------------------------------------------
A forma mais prática de executar os comandos do arquivo, é:
. arquivo.txt

ponto_espaço_arquivo.txt
O Underline é só para facilitar a leitura :)
Sem eval, laço, read, awk, cat, permissão, etc...
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Consegui!
O cat que eu estava fazendo conflitava com o redirecionamento do < done.
Valeuzão!!!!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts