The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
File Descriptor Table Ashaman0 UNIX for Advanced & Expert Users 6 12-03-2007 02:54 PM
Descripteur de fichier constante vino High Level Programming 4 05-18-2005 02:18 AM
File Descriptor Aide rahulrathod UNIX pour les nuls Questions et réponses 3 10-14-2004 06:08 AM
fichier de l'activité (ouvert / fermé) descripteur de fichier d'informations sur l'utilisation de script Korn Shell Gary Dunn UNIX pour les nuls Questions et réponses 3 06-07-2004 02:54 PM
mauvais descripteur de fichier? FTB UNIX pour les nuls Questions et réponses 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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 06-04-2008
robotball robotball is offline
Registered User
  
 

Date d'inscription: juin 2008
Messages: 8
Question L'adoption d'un descripteur de fichier

Je tente à droite d'une fonction qui utilise un descripteur de fichier à écrire dans un fichier journal. Le problème est que la déclaration sur l'imprimé le descripteur de fichier est appelé mauvais. Maintenant, quand j'ai ouvert le fichier à imprimer et à la fonction f_open passant par le descripteur de f_print_log tous fonctionne bien, cependant, quand je suis retourné le descripteur de fichier à logtest.sh et puis essayer de les transmettre aux f_print_log-je obtenir de mauvais descripteur de fichier. Toute aide serait appréciée. Voici mes fonctions de script et l'appel:

********* Ces fonctions font partie de f_log.sh
fonction f_open_log
(
next_fh \u003d $ LOG_FH_COUNTER
eval "exec $ next_fh> $ 1"

f_print_log $ next_fh "Log fichier ouvert"
((LOG_FH_COUNTER \u003d LOG_FH_COUNTER + 1))

echo $ () next_fh
return 0
)

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

logtest.sh ->

#! / bin / ksh

. f_log.sh

LOG_FH_COUNTER typeset-i \u003d 3

LOG \u003d $ (f_open_log bigfile)
f_print_log $ LOG "Ceci est un test"

sortie
  #2 (permalink)  
Old 06-04-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2003
Lieu: Florida
Messages: 1941
Quelle version de ksh utilisez-vous? ksh88, phksh ou ksh93?
  #3 (permalink)  
Old 06-05-2008
robotball robotball is offline
Registered User
  
 

Date d'inscription: juin 2008
Messages: 8
Merci d'avoir répondu. I am running ksh88.
  #4 (permalink)  
Old 06-05-2008
robotball robotball is offline
Registered User
  
 

Date d'inscription: juin 2008
Messages: 8
J'ai trouvé ce qui est à l'origine du mauvais descripteur de fichier, mais je ne sais pas comment obtenir le funcitonallity je veux travailler. J'ai laissé une sortie de ligne de la fonction f_print_log que j'ai essayé de ne pas faire de mon poste de long. La fonction devrait être

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

Donc, si je le VERBOSE option logtest.sh, la production devrait être écrit à l'écran et le dossier, cependant, quand f_open_log est appelé et il écrit le "Log fichier ouvert" à l'aide des deux sous-f_print_log le descripteur de fichier et que la ligne sont envoyés retour à logtest.sh qui génère les mauvais descripteur.

Toute suggestions. Je tiens à garder l'ouverture du fichier journal en ligne si je peux. Merci.
  #5 (permalink)  
Old 06-05-2008
ère era is offline Forum Advisor  
Inutile de Herder Cats (en congé sabbatique)
  
 

Join Date: Mar 2008
Location: / il / est / que / bin / sh
Messages: 3652
Je ne pense pas que le descripteur va persister dans le shell parent lorsque vous l'exécutez à l'intérieur de backticks. Au moins c'est le cas ici, avec Bash.
  #6 (permalink)  
Old 06-06-2008
robotball robotball is offline
Registered User
  
 

Date d'inscription: juin 2008
Messages: 8
Trouvé une solution. J'ai ajouté un argument supplémentaire à la routine f_print_log tourner verbose off. Je l'utiliser dans le f_open_log routine et tout fonctionne bien.
  #7 (permalink)  
Old 06-08-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Modérateur
  
 

Join Date: Dec 2003
Lieu: Florida
Messages: 1941
Le problème, c'est que la ligne de code suivante

Code:
LOG=$(f_open_log bigfile)

Cela provoque le descripteur de fichier doit être fermée. Une solution est d'utiliser une variable globale comme dans l'exemple suivant

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

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:36 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0