[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: duvida redirecionamento da saida de erro
From: |
Marcelo Giovani |
Subject: |
Re: duvida redirecionamento da saida de erro |
Date: |
Thu, 18 Dec 2008 12:39:47 -0800 (PST) |
Olá Rafael,
tenta redirecionar a saída de erro (2) para a saída padão (1) e as mensagens
de erro (se ouver) aparecerão em uma variável (caso atribua a esta variável a
saída de um comando).
Por exemplo:
user@maq>touch arquivo.txt
user@maq>echo "conteudo_do_arquivo" >> arquivo.txt
user@maq>chmod 000 arquivo.txt
Se atribuirmos à variável ABC o resultado do comando "cat arquivo.txt" a
variável ABC ficará sem valor pois o arquivo não tem permissão de leitura
(permissão 000).
user@maq>ABC=`cat arquivo.txt`
user@maq>echo $ABC
user@maq>
Se redirecionarmso a saída de erro para a saída padrão temos:
user@maq>ABC=`cat arquivo.txt 2>&1`
user@maq>echo $ABC
cat: arquivo.txt: Permissão negada
user@maq>
O "2>&1" redireciona a saída de erro (2) para a saída padrão (1) e se houver
mensagem de erro essa vai aparecer na saída padrão que por sua vez será
atribuida à variável ABC.
Espero ter ajudado.
Um forte abraços e um ótimo 2009 a todos!!
Marcelo Giovani
--- Em ter, 16/12/08, Rafael de Oliveira Costa <address@hidden> escreveu:
De: Rafael de Oliveira Costa <address@hidden>
Assunto: [shell-script] duvida redirecionamento da saida de erro
Para: address@hidden
Data: Terça-feira, 16 de Dezembro de 2008, 15:42
Ola pessoal,
estou tentando fazer com que uma variavel receba a saida de erro de um
comando para que eu possa fazer verificacoes nessa variavel mais tarde. eu
resolvi esse problema como abaixo mas nao gostei da solucao pois cria um
arquivo e depois tenho que apagar o mesmo, no caso, TEMP
# mt -f /dev/st0 status 2> TEMP
# erro_fita=$( cat TEMP)
# rm TEMP
Alguem tem alguma ideia de como posso fazer isso ?
Alem disso, eu tentei fazer essa mesma tarefa atraves de "redirecionamentos"
pois vi uns exemplos no seguinte site
http://tldp. org/LDP/abs/ html/io-redirect ion.html
porem nao funciona da maneira que eu esperava ou entao eu nao estou sabendo
utilizar. segue a minha tentativa
exec 6<&1
exec 1<&2
erro_fita=$( mt -f /dev/st0 status)
exec 2<&1
exec 1<&6
exec 6<&-
echo "erro_fita = $erro_fita"
--
Atenciosamente
Rafael de Oliveira Costa
"The first step to getting the things you want out of life is this : decide
what you want"
Ben Stein
[As partes desta mensagem que não continham texto foram removidas]
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
[As partes desta mensagem que não continham texto foram removidas]