Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1178 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Programmation Korn Shell] - Création d'une bibliothèque de fonctions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Programmation Korn Shell] - Création d'une bibliothèque de fonctions

n°1022332
IsBack
Posté le 23-03-2005 à 15:21:21  profilanswer
 

Bonjour,
 
Je programme des scripts en Korn Shell et j'utilise des fonctions que j'écris aussi en korn Shell.
 
Le problème est que je ne sais pas si j'ai bien mis en place le mécanisme lié aux fonctions en programmation ksh.
 
En fait, j'ai créé un répertoire :
 

Code :
  1. /home/functions


 
Dans lequel se trouve mes fichiers de fonctions
 

Code :
  1. CheckDate, CheckScript, etc ....


 
En suite, j'ai déclarer la variable FPATH=/home/functions dans le fichier d'initialisation : .profile
 
En suite au sein d'un script :
 

Code :
  1. #!/bin/ksh
  2. #@# Mise en place de la trace d execution
  3. #@# Association des sorties standard et erreur redirigees dans la trace
  4. exec > /home/sybase/prog/callfunction.txt 2>&1
  5. #@# Chargement de la fonction
  6. autoload CheckDate
  7. #@# Appel de la fonction CheckDate
  8. CheckDate $1
  9. if [ $? -eq 1 ]; then
  10.    print "Erreur : argument date."
  11.    exit 1
  12. else
  13.    print "Date : $1, ok."
  14. fi


 
Puis j'exécute ce script
 

Code :
  1. callfunction.ksh 20050606


 
tout se passe comme prévu c'est à dire qu'il valide ou non le format et l'existence de la date passée en paramètre.
 
Es ce que ce mécanisme est correct ?
 
Lorsque je lance le sctipt à la main :  

Code :
  1. callfunction.ksh 20050606


 
Ca marche correctement.
Par contre via la crontab, ça ne marche pas.
Il n'y a une erreur sur l'appel de la fonction.
 
Je pense que cela vient du fait que la crontab n'utilise pas les même fichiers d'initialisation (profile, .profile, etc ....)
 
Quelqu'un a une idée ?
 
Merci.


Message édité par IsBack le 23-03-2005 à 16:01:15
mood
Publicité
Posté le 23-03-2005 à 15:21:21  profilanswer
 

n°1022605
Sve@r
Posté le 23-03-2005 à 19:28:57  profilanswer
 

IsBack a écrit :

Bonjour,
 
Je programme des scripts en Korn Shell et j'utilise des fonctions que j'écris aussi en korn Shell.
 
Le problème est que je ne sais pas si j'ai bien mis en place le mécanisme lié aux fonctions en programmation ksh.
 
En fait, j'ai créé un répertoire :
 

Code :
  1. /home/functions


 
Dans lequel se trouve mes fichiers de fonctions
 

Code :
  1. CheckDate, CheckScript, etc ....


 
En suite, j'ai déclarer la variable FPATH=/home/functions dans le fichier d'initialisation : .profile
 
En suite au sein d'un script :
 

Code :
  1. #!/bin/ksh
  2. #@# Mise en place de la trace d execution
  3. #@# Association des sorties standard et erreur redirigees dans la trace
  4. exec > /home/sybase/prog/callfunction.txt 2>&1
  5. #@# Chargement de la fonction
  6. autoload CheckDate
  7. #@# Appel de la fonction CheckDate
  8. CheckDate $1
  9. if [ $? -eq 1 ]; then
  10.    print "Erreur : argument date."
  11.    exit 1
  12. else
  13.    print "Date : $1, ok."
  14. fi


 
Puis j'exécute ce script
 

Code :
  1. callfunction.ksh 20050606


 
tout se passe comme prévu c'est à dire qu'il valide ou non le format et l'existence de la date passée en paramètre.
 
Es ce que ce mécanisme est correct ?
 
Lorsque je lance le sctipt à la main :  

Code :
  1. callfunction.ksh 20050606


 
Ca marche correctement.
Par contre via la crontab, ça ne marche pas.
Il n'y a une erreur sur l'appel de la fonction.
 
Je pense que cela vient du fait que la crontab n'utilise pas les même fichiers d'initialisation (profile, .profile, etc ....)
 
Quelqu'un a une idée ?
 
Merci.


 
Le cron ne sait pas où se trouve ta fonction (variable PATH de base)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1022901
IsBack
Posté le 23-03-2005 à 23:02:49  profilanswer
 

Sve@r a écrit :

Le cron ne sait pas où se trouve ta fonction (variable PATH de base)


 
D'après ce que tu me dis il faut mettre dans le path, le chemin absolu du répertoire où se trouve mes fonctions.
 
Alors pourquoi dans différentes documentation sur le web il préconise de créer une variable FPATH, les alias autoload='typeset -fu', etc .... ?
Si au final il suffit d'ajouter au path une référence pour que cela marche aussi bien en manuel qu'avec la crontab. Je comprends pas trop l'intêret la variable FPATH en fait.

n°1024061
Sve@r
Posté le 24-03-2005 à 19:33:54  profilanswer
 

IsBack a écrit :

D'après ce que tu me dis il faut mettre dans le path, le chemin absolu du répertoire où se trouve mes fonctions.
 
Alors pourquoi dans différentes documentation sur le web il préconise de créer une variable FPATH, les alias autoload='typeset -fu', etc .... ?
Si au final il suffit d'ajouter au path une référence pour que cela marche aussi bien en manuel qu'avec la crontab. Je comprends pas trop l'intêret la variable FPATH en fait.


 
Bon, déjà je connais pas trop les subtilités du Korn-Shell par rapport au Bourne Shell. Mais je suis quasiment certain (à vérifier) que quand Cron lance un script, il travaille lui en Bourne Shell et donc que ta variable FPATH (que je ne connais pas) ben il s'en fout.
 
Une façon de bien connaître ton environnement Cron: Tu crées un script qui affiche des trucs de ton environnement (echo $0, echo $PATH, echo $FPATH, env, etc...) et tu lances ce script depuis Cron. Tu verras mieux comment ça marche.
 
Autre truc: Quand Cron lance ton premier script (celui qui marche pas), il doit probablement t'envoyer le résultat par mail. Que dis ce mail ?
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1024345
matafan
Posté le 25-03-2005 à 00:15:49  profilanswer
 

Y'a le builtin "env" pour connaitre l'environnement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Programmation Korn Shell] - Création d'une bibliothèque de fonctions

 

Sujets relatifs
[T-SQL] Création de base sur serveur distantCreation de fichier en php
Excel : Macro pour création classeur protégéProgrammation en C - Suppression de caractère
[vb.net] création composant[C++] VFW & création d'avi ... Problème de palette
Algorithmique programmation ccreation bouton pour acces paramètres matos
[ASPX][C#] Création d'un composantprogrammation d'interruption sous assembleur
Plus de sujets relatifs à : [Programmation Korn Shell] - Création d'une bibliothèque de fonctions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR