The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Erro com if .. Please help jisha Programação Shell Script e 1 01-16-2008 07:13
enquanto lê loop w / aninhados se uma declaração - não se tratar individualmente cada entrada littlefrog Programação Shell Script e 7 12-11-2007 09:49
if num ciclo while Bobo UNIX para Dummies Perguntas & Respostas 2 11-07-2006 12:38
se na afirmação de um laço de corda Sniper Pixie UNIX para Dummies Perguntas & Respostas 7 03-02-2006 07:28
tar erro declaração legato UNIX para Dummies Perguntas & Respostas 3 03-29-2005 10:58

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 09-19-2007
lumdev lumdev is offline
Usuário
  
 

Join Date: Sep 2006
Localização: Bélgica
Posts: 6
Para loop declaração - captura de erro

Estou com uma dúvida sobre a sapata. (bash)

Eu tenho o seguinte exemplo:

para o arquivo em `ls *. txt`
fazer
ler o arquivo ...
feito

Agora, quando existe um ficheiro actual, não há problema, agora, quando não há qualquer arquivo presentes que recebo a seguinte saída na minha caixa de mail: "Nenhum tal lima ou diretório" script é executado através de crontab.

Agora quero pegar o erro acima para que eu não entendi mais nada no meu e-mail, mas não tenho a menor idéia de como fazer isto.

Posso fazer uma declaração se primeiro "if [-f *. txt] ...", mas deve haver uma solução melhor.

Thx.
  #2 (permalink)  
Old 09-19-2007
ajcannon ajcannon is offline
Usuário
  
 

Join Date: Aug 2007
Localização: Binfield, Berkshire. Reino Unido
Lugares: 91
se

Acho que o uso do 'se' declaração é uma solução perfeitamente razoável. Precisa de algum tipo se declaração condicional para determinar se existe ou não o seu arquivo e de um 'caso' seria OK
  #3 (permalink)  
Old 09-19-2007
porteiro porter is offline Forum Advisor  
Usuário
  
 

Join Date: Jan 2007
Posts: 2.965
Citação:
Originally Posted by lumdev View Post
Posso fazer uma declaração se primeiro "if [-f *. txt] ...", mas deve haver uma solução melhor.
Verifique se há o arquivo atual do loop


Código:
  for file in *.txt
  do
     if test -f $file
     then
        read file ...
     fi
  done

  #4 (permalink)  
Old 09-19-2007
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programador, autor
  
 

Join Date: Mar 2007
Localização: Toronto, Canadá
Posts: 2.365
Citação:
Originally Posted by lumdev View Post
Estou com uma dúvida sobre a sapata. (bash)

Eu tenho o seguinte exemplo:

para o arquivo em `ls *. txt`

Essa não é a forma de circuito arquivos. Não só é ls desnecessárias, ele irá quebrar seu script se algum arquivo conter espaços ou outros caracteres patológicos. Use o curinga directamente:


Código:
for file in *.txt

Citação:
fazer
ler o arquivo ...
feito

Agora, quando existe um ficheiro actual, não há problema, agora, quando não há qualquer arquivo presentes que recebo a seguinte saída na minha caixa de mail: "Nenhum tal lima ou diretório" script é executado através de crontab.

Agora quero pegar o erro acima para que eu não entendi mais nada no meu e-mail, mas não tenho a menor idéia de como fazer isto.

Posso fazer uma declaração se primeiro "if [-f *. txt] ...", mas deve haver uma solução melhor.

Não, você não pode fazer isso, ele irá falhar se houver mais de um arquivo. Txt.

Você pode usar uma função:


Código:
is_file() {
   test -f "$1"
}

is_file *.txt &&
 for file in *.txt
 do
   ...
 done

A maneira mais segura é a de verificar cada arquivo:


Código:
for file in *.txt
do
  [ -f "$file" ] || continue
  ...
done

  #5 (permalink)  
Old 09-20-2007
lumdev lumdev is offline
Usuário
  
 

Join Date: Sep 2006
Localização: Bélgica
Posts: 6
Thx para as respostas.

Usei a solução com a função, agora eu não obter qualquer "Nenhum tal lima ou diretório" output mais.

Thx pela ajuda cfajohnson.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 11:35.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0