The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Arkiv deskriptor Tabell Ashaman0 UNIX för avancerade & Expertanvändare 6 12-03-2007 02:54
Arkiv deskriptor konstant vino High Level Programming 4 05-18-2005 01:18
Arkiv deskriptor Hjälp rahulrathod UNIX for Dummies Frågor & Svar 3 10-14-2004 05:08
fil verksamhet (öppen / stängd) fil deskriptor info använda KORN shell scripting Gary Dunn UNIX for Dummies Frågor & Svar 3 06-07-2004 01:54
dålig fil deskriptor? ftb UNIX for Dummies Frågor & Svar 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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 06-04-2008
robotball robotball is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 8
Question Skicka en fil deskriptor

Jag försöker att rätta till en funktion som använder en fil deskriptor att skriva till en loggfil. Problemet är att om print uttalande filen deskriptor kallas dåligt. Nu när jag först öppna filen och skriva ut det i f_open funktion genom att skicka deskriptorn att f_print_log alla fungerar bra, men när jag returnerar filen deskriptor att logtest.sh och sedan försöka förmedla det till f_print_log jag dålig fil deskriptor. All hjälp skulle uppskattas. Här är mina uppgifter och kräver script:

********* Dessa funktioner är i f_log.sh
funktion f_open_log
(
next_fh \u003d $ LOG_FH_COUNTER
eval "exec $ next_fh> $ 1"

f_print_log $ next_fh "Loggfil öppnas"
((LOG_FH_COUNTER \u003d LOG_FH_COUNTER + 1))

echo $ (next_fh)
return 0
)

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

logtest.sh ->

#! / bin / ksh

. f_log.sh

typeset-i LOG_FH_COUNTER \u003d 3

LOG \u003d $ (f_open_log bigfile)
f_print_log $ LOG "Detta är ett test"

exit
  #2 (permalänk)  
Old 06-04-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Ort: Florida
Inlägg: 1917
Vilken version av ksh använder du? ksh88, phksh eller ksh93?
  #3 (permalänk)  
Old 06-05-2008
robotball robotball is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 8
Tack för att svara. Jag använder ksh88.
  #4 (permalänk)  
Old 06-05-2008
robotball robotball is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 8
Jag har hittat vad som orsakar dålig fil deskriptor Men jag vet inte hur du får ut det funcitonallity jag vill arbeta. Jag lämnade en linje ut ur den f_print_log fungera som jag försökte att inte göra mitt inlägg på länge. Funktionen bör

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

Så om jag ställer in PRATIG alternativ i logtest.sh produktionen skulle vara skriven på skärmen och filen dock när f_open_log heter och skriver "Loggfil öppna" med f_print_log subrutin både filen deskriptor och den linjen skickas Tillbaka till logtest.sh som genererar dåligt deskriptor.

Några förslag. Jag vill hålla Loggfil öppnades linje om jag kan. Tack.
  #5 (permalänk)  
Old 06-05-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Jag tror inte deskriptorn kommer att finnas kvar i moderbolaget tanken när du kör det från insidan backticks. Åtminstone så är fallet här, med Bash.
  #6 (permalänk)  
Old 06-06-2008
robotball robotball is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 8
Hittade en lösning. Jag lade till ytterligare ett argument till f_print_log rutin att vända verbose avstängd. Jag använder detta i f_open_log rutin och allt fungerar bra.
  #7 (permalänk)  
Old 06-08-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2003
Ort: Florida
Inlägg: 1917
Problemet är med följande rad kod
Kod:
LOG=$(f_open_log bigfile)
Detta medför filen deskriptor att stängas. En lösning är att använda en global variabel som i följande exempel
Kod:
#!/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

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 03:23.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0