Armazenar saída de comando em variável [RESOLVIDO]

1. Armazenar saída de comando em variável [RESOLVIDO]

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 13:24h

Pessoal estou tentando armazenar a saída do comando abaixo em uma variável:

nomeCortado=´$(ls *.nds) | awk -F'.nds' '{print $1}'´ 


Porém estou com o erro:

awk: 1: unexpected character 0xc2 


Como posso resolver este problema?


  


2. Re: Armazenar saída de comando em variável [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/06/2016 - 13:27h

Vc deve colocar crase, não acento agudo.


nomeCortado=`$(ls *.nds) | awk -F'.nds' '{print $1}'`

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Armazenar saída de comando em variável [RESOLVIDO]

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 13:47h

renato_pacheco escreveu:

Vc deve colocar crase, não acento agudo.


nomeCortado=`$(ls *.nds) | awk -F'.nds' '{print $1}'`

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Certo, pode me dar mais uma ajuda? Onde estou errando neste comando:

for i in $(ls *.nds); do
nomeCortado=`cat $i | awk -F'.nds' '{print $1}'`
7z a -t7z -mx=9 $nomeCortado.7z $i && rm -f $i
done


Porque não está funfando.


4. Re: Armazenar saída de comando em variável [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/06/2016 - 13:52h

Cara, depende da msg d erro q dá. Poste a msg d erro.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Armazenar saída de comando em variável [RESOLVIDO]

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 13:56h

renato_pacheco escreveu:

Cara, depende da msg d erro q dá. Poste a msg d erro.
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Segue a mensagem de erro:


7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=pt_BR.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Scanning


1: WARNING: No more files


Updating archive .7z



WARNINGS for files:

1 : No more files
----------------
WARNING: Cannot find 1 file

7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=pt_BR.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Scanning


vs: WARNING: No more files


Updating archive .7z



WARNINGS for files:

vs : No more files
----------------
WARNING: Cannot find 1 file



6. Re: Armazenar saída de comando em variável [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/06/2016 - 14:16h

Pelas msgs, a variável tá vindo vazia. Faça o seguinte teste pra saber se realmente algo está sendo armazenado nessa variável:


for i in $(ls *.nds); do
nomeCortado=`cat $i | awk -F'.nds' '{print $1}'`
echo $nomeCortado
done


Se não vier nada, o código tá incorreto.

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


7. Re: Armazenar saída de comando em variável

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 14:20h

renato_pacheco escreveu:

Pelas msgs, a variável tá vindo vazia. Faça o seguinte teste pra saber se realmente algo está sendo armazenado nessa variável:


for i in $(ls *.nds); do
nomeCortado=`cat $i | awk -F'.nds' '{print $1}'`
echo $nomeCortado
done


Se não vier nada, o código tá incorreto.

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Me parece que é um problema em relação ao espaço no nome dos arquivos porque criei 2 de testes (teste 1.nds e teste 2.nds) :

cat: teste: Arquivo ou diretório não encontrado

cat: 1.nds: Arquivo ou diretório não encontrado

cat: teste: Arquivo ou diretório não encontrado

cat: 2.nds: Arquivo ou diretório não encontrado



8. Re: Armazenar saída de comando em variável [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/06/2016 - 14:40h

Entendi. Isso é fácil de arrumar. Basta vc incluir barra invertida no lugar dos espaços:


cat $i | sed 's/ /\\ /' |awk -F'.nds' '{print $1}'

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


9. Re: Armazenar saída de comando em variável [RESOLVIDO]

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 14:49h

renato_pacheco escreveu:

Entendi. Isso é fácil de arrumar. Basta vc incluir barra invertida no lugar dos espaços:


cat $i | sed 's/ /\\ /' |awk -F'.nds' '{print $1}'

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Continua o mesmo erro :(



10. Re: Armazenar saída de comando em variável

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/06/2016 - 14:59h

Vc fazendo o comando abaixo não mostra nada? Não era pra ter o mesmo erro!


for i in $(ls *.nds); do
nomeCortado=`cat $i | sed 's/ /\\ /' | awk -F'.nds' '{print $1}'`
echo $nomeCortado
done

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


11. Re: Armazenar saída de comando em variável [RESOLVIDO]

Douglas
Roknauta

(usa Ubuntu)

Enviado em 21/06/2016 - 15:02h

renato_pacheco escreveu:

Vc fazendo o comando abaixo não mostra nada? Não era pra ter o mesmo erro!


for i in $(ls *.nds); do
nomeCortado=`cat $i | sed 's/ /\\ /' | awk -F'.nds' '{print $1}'`
echo $nomeCortado
done

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Mesma coisa :(

cat: teste: Arquivo ou diretório não encontrado

cat: 1.nds: Arquivo ou diretório não encontrado

cat: teste: Arquivo ou diretório não encontrado

cat: 2.nds: Arquivo ou diretório não encontrado




12. Re: Armazenar saída de comando em variável [RESOLVIDO]

Carlos E G Carvalho
carloscartola

(usa XUbuntu)

Enviado em 21/06/2016 - 15:15h

O problema está na geração dos valores pro "for". O "for" vai usar espaço pra separar as variáveis, ou você trata isso nele (o que não é óbvio) ou simplifica todo o script logo. Pelo que entendi o que você quer pode se fazer sem loop:

ls *.nds | sed -e 's/\.nds$//'

Só não tenho certeza de que é isso que quer por que usou "cat $i", mas imagino que deveria ter usado "echo $i". Se o que queria era realmente o conteúdo dos arquivos é só mudar o que sugeri também.

cat *.nds | sed -e 's/\.nds$//'

Abs, Cartola.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts