The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
File Descriptor Table Ashaman0 UNIX e avanzata per utenti esperti 6 12-03-2007 02:54 PM
File Descrittore costante vino Di programmazione ad alto livello 4 05-18-2005 02:18 AM
File Descriptor Aiuto rahulrathod UNIX for Dummies Domande & Risposte 3 10-14-2004 06:08 AM
attività di file (aperto / chiuso) descrittore di file utilizzando informazioni Korn shell scripting Gary Dunn UNIX for Dummies Domande & Risposte 3 06-07-2004 02:54 PM
cattivo descrittore di file? FTB UNIX for Dummies Domande & Risposte 1 02-20-2002 07:19 PM

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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 06-04-2008
robotball robotball is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Posti: 8
Question Il superamento di un descrittore di file

Sto cercando di diritto una funzione che utilizza un descrittore di file di scrivere un file di log. Il problema è che la dichiarazione sulla stampa il descrittore del file si chiama male. Adesso quando ho aperto il file e di stampa in funzione f_open facendo passare il descrittore di f_print_log tutti funziona bene, però quando ho restituito il descrittore di file per logtest.sh e quindi provare a passarlo a f_print_log ho male descrittore di file. Qualsiasi aiuto sarebbe apprezzato. Qui sono le mie funzioni di chiamata e di script:

Queste funzioni sono ********* IN f_log.sh
funzione f_open_log
(
next_fh \u003d $ LOG_FH_COUNTER
eval "$ exec next_fh> $ 1"

f_print_log $ next_fh "file di log aperto"
((LOG_FH_COUNTER \u003d LOG_FH_COUNTER + 1))

echo $ () next_fh
return 0
)

funzione f_print_log
(
print-u $ 1 $ 2
return 0
)
************************************************** *

logtest.sh ->

#! / bin / ksh

. f_log.sh

-comporre i LOG_FH_COUNTER \u003d 3

LOG \u003d $ (f_open_log bigfile)
f_print_log $ LOG "Questa è una prova"

uscita
  #2 (permalink)  
Old 06-04-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: dicembre 2003
Luogo: Florida
Interventi: 1.937
Quale versione di ksh stai usando? ksh88, phksh o ksh93?
  #3 (permalink)  
Old 06-05-2008
robotball robotball is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Posti: 8
Grazie per la risposta. Sono in esecuzione ksh88.
  #4 (permalink)  
Old 06-05-2008
robotball robotball is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Posti: 8
Ho trovato ciò che sta causando il cattivo descrittore di file, però non so come ottenere il funcitonallity voglio lavorare. Ho lasciato una linea out out del f_print_log funzione come ho cercato di non fare il mio post a lungo. La funzione deve essere

funzione f_print_log
(
[[$ VERBOSE \u003d\u003d 0]] & & print $ 2
print-u $ 1 $ 2
return 0
)

Quindi, se ho impostato l'opzione in logtest.sh VERBOSE, la produzione sarebbe scritta allo schermo e il file, tuttavia quando viene chiamato f_open_log e scrive il "file di log aperto", utilizzando il f_print_log subroutine sia il descrittore del file e la linea che vengono inviati torna alla logtest.sh che genera il cattivo Descrittore.

Qualsiasi suggerimenti. Vorrei mantenere la linea di apertura del file di log, se posso. Grazie.
  #5 (permalink)  
Old 06-05-2008
epoca era is offline Forum Advisor  
Herder di Inutile Gatti (Su sabbatico)
  
 

Iscriviti Data: marzo 2008
Ubicazione: / ci / è / solo / bin / sh
Interventi: 3.652
Non credo che il Descrittore persisterà nel genitore della shell quando si esegue da dentro backticks. Almeno questo è il caso qui, con Bash.
  #6 (permalink)  
Old 06-06-2008
robotball robotball is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Posti: 8
Trovato una soluzione. Ho aggiunto un ulteriore argomento alla routine, a sua volta f_print_log verbose off. Io lo uso in f_open_log di routine e tutto funziona bene.
  #7 (permalink)  
Old 06-08-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: dicembre 2003
Luogo: Florida
Interventi: 1.937
Il problema è con la seguente riga di codice

Codice:
LOG=$(f_open_log bigfile)

Questo fa sì che il descrittore di file per essere chiuso. Una soluzione è quella di utilizzare una variabile globale, come nel seguente esempio

Codice:
#!/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

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 02:59 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0