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
Arquivo Descriptor Table Ashaman0 UNIX & avançada para usuários experientes 6 12-03-2007 02:54
Arquivo Descritor constante vino Alto Nível de programação 4 05-18-2005 02:18
File Descriptor Ajuda rahulrathod UNIX para Dummies Perguntas & Respostas 3 10-14-2004 06:08
arquivo actividade (aberto / fechado) file descriptor info utilizando KORN shell scripts Gary Dunn UNIX para Dummies Perguntas & Respostas 3 06-07-2004 02:54
file descriptor ruim? FTB UNIX para Dummies Perguntas & Respostas 1 02-20-2002 07:19

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 06-04-2008
robotball robotball is offline
Usuário
  
 

Join Date: Jun 2008
Posts: 8
Question Passando um descritor de ficheiro

Estou tentando direito uma função que utiliza um descritor de ficheiro para gravar um arquivo de log. O problema é que a declaração sobre a imprimir o arquivo é chamado Descritor ruim. Agora quando eu primeiro abra o arquivo e imprimir a ele na função f_open passando para o descritor f_print_log todos funciona bem, porém quando voltei para o arquivo descritor logtest.sh e tentar passá-lo para f_print_log Recebo ruim file descriptor. Qualquer ajuda será apreciada. Aqui estão as minhas funções e chamando script:

Estas funções são ********* EM f_log.sh
função f_open_log
(
next_fh \u003d $ LOG_FH_COUNTER
eval "exec $ next_fh> $ 1"

f_print_log $ next_fh "Log arquivo aberto"
((LOG_FH_COUNTER \u003d LOG_FH_COUNTER + 1))

echo $ (next_fh)
return 0
)

função f_print_log
(
print-u $ 1 $ 2
return 0
)
************************************************** *

logtest.sh ->

#! / bin / ksh

. f_log.sh

compor-LOG_FH_COUNTER i \u003d 3

LOG \u003d $ (f_open_log bigfile)
f_print_log $ LOG "Este é um teste"

saída
  #2 (permalink)  
Old 06-04-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderador
  
 

Join Data: dezembro 2003
Localização: Florida
Posts: 1.941
Que versão específica do ksh você está usando? ksh88, phksh ou ksh93?
  #3 (permalink)  
Old 06-05-2008
robotball robotball is offline
Usuário
  
 

Join Date: Jun 2008
Posts: 8
Obrigado por responder. Estou executando ksh88.
  #4 (permalink)  
Old 06-05-2008
robotball robotball is offline
Usuário
  
 

Join Date: Jun 2008
Posts: 8
Achei que o que está causando o mau file descriptor, porém não sei como obter o funcitonallity quero trabalhar. Deixei uma linha fora da f_print_log função que eu estava tentando não fazer o meu post em muito tempo. A função deve ser

função f_print_log
(
[[$ VERBOSE \u003d\u003d 0]] & & print $ 2
print-u $ 1 $ 2
return 0
)

Portanto, se eu definir a opção VERBOSE em logtest.sh, a produção poderia ser escrita para o ecrã e no ficheiro, no entanto, quando f_open_log é chamado e ele escreve o "Log arquivo aberto", utilizando o f_print_log subrotina tanto o arquivo descritor e que a linha é enviada voltar ao logtest.sh que gera o mau descritor.

Qualquer sugestões. Gostaria de manter o arquivo de log abriu linha se eu puder. Obrigado.
  #5 (permalink)  
Old 06-05-2008
era era is offline Forum Advisor  
Herder do Inútil Gatos (On Sabático)
  
 

Join Date: Mar 2008
Localização: / lá / é / só / bin / sh
Posts: 3.652
Não creio que o descritor irão persistir no reservatório mãe quando você executá-lo de dentro backticks. Pelo menos esse é o caso aqui, com Bash.
  #6 (permalink)  
Old 06-06-2008
robotball robotball is offline
Usuário
  
 

Join Date: Jun 2008
Posts: 8
Encontrada uma solução. Eu adicionei um argumento adicional para a rotina de passar f_print_log verbosos desligado. Eu uso isso em f_open_log a rotina e tudo funciona bem.
  #7 (permalink)  
Old 06-08-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderador
  
 

Join Data: dezembro 2003
Localização: Florida
Posts: 1.941
O problema é com a seguinte linha de código

Código:
LOG=$(f_open_log bigfile)

Isso faz com que o arquivo descritor de ser fechado. Uma solução é usar uma variável global como no exemplo a seguir

Código:
#!/bin/ksh88

typeset -i fh

function open_log
{
    next=${LOG_FH_COUNTER}
    eval "exec ${next}>$1"
    fh=${next}

    print_log ${next} "Log file opened"
    ((LOG_FH_COUNTER=LOG_FH_COUNTER+1))

    echo ${next}
}

function print_log
{
    print -u$1 $2
}

typeset -i LOG_FH_COUNTER=3
open_log bigfile
print_log ${fh} "This is a test"

exit 0

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 04:10.


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