Afficher le contenu d'une variable contenue dans une autre var

Résolu/Fermé
Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016 - 3 févr. 2016 à 16:04
Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016 - 4 févr. 2016 à 12:02
Bonjour à tous,

J'ai un problème en voulant développer un script SHELL.

Je récupère dans un fichier des noms de script à exécuter.
Or le fichier est de cette forme :

MonFic.txt :
$MonDossierKSH/script1.ksh
$MonDossierKSH/script2.ksh
$MonDossierSH/script1.sh



Du coup, quand je récupère la ligne dans un variable, je ne peux pas afficher le chemin complet du script puisque il ne prend pas la valeur $MonDossierKSH comme une variable.

Exemple de script :

#!/bin/ksh

$MonDossierKSH=/appli/projects/MonAppli/KSH
$MonDossierSH=/appli/projects/MonAppli/SH

while IFS=" " read script
do
	echo $script
done < MonFic.txt


Le résultat :
$MonDossierKSH/script1.ksh
$MonDossierKSH/script2.ksh
$MonDossierSH/script1.sh


Or j'aimerais avoir :
/appli/projects/MonAppli/KSH/script1.ksh
/appli/projects/MonAppli/KSH/script2.ksh
/appli/projects/MonAppli/SH/script1.sh



Est ce possible ?

Merci pour votre retour :)

1 réponse

Salut,
Est ce possible ?
Dans l'état actuel, non :-(

Comment veux-tu que ton script devine ce que contient $MonDossierSH si cette variable n'est déclarée nulle part ?

Déjà, comme elle atterrit (sous cette forme) dans ton fichier MonFic.txt ?
0
Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016
3 févr. 2016 à 16:33
Merci pour ton retour rapide.

"Comment veux-tu que ton script devine ce que contient $MonDossierSH si cette variable n'est déclarée nulle part ?"

Justement, j'aimerais forcer le script à voir le "$" pour qu'il comprenne que c'est une variable :D


"Déjà, comme elle atterrit (sous cette forme) dans ton fichier MonFic.txt ?"

En fait, je récupère tous les traitements présent de la crontab qui doivent tourner entre deux heures données.

Et dans cette crontab, on retrouve ce genre d'information.

J'ai une crontab du genre :
#############################################
#####     Declaration des variables     #####
#############################################
MonDossierKSH=/appli/projects/MonAppli/KSH
MonDossierSH=/appli/projects/MonAppli/SH

#Mes scripts
20 09 * * * $MonDossierKSH/script1.ksh
30 09 * * * $MonDossierKSH/script2.ksh



Si vous avez des idées ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419 > Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016
3 févr. 2016 à 17:10
Salut,
En fait, je récupère tous les traitements présent de la crontab qui doivent tourner entre deux heures données.
Et comment le récupères-tu ?

Parce qu'au lieu de récupérer juste $MonDossierKSH, c'est /appli/projects/MonAppli/KSH qu'il te faut récupérer.
0
Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016 > zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
3 févr. 2016 à 17:21
Je récupère la crontab dans un fichier, puis je fais mon analyse sur ce fichier.

crontab -l > monFic.txt


Je ne vois pas comment récupérer le chemin au lieu de la variable dans mon fichier.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419 > Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016
3 févr. 2016 à 17:36
Avec la commande
crontab -l > monFic.txt
, le contenu de monFic.txt devrait ressembler à :
#############################################
#####     Declaration des variables     #####
#############################################
MonDossierKSH=/appli/projects/MonAppli/KSH
MonDossierSH=/appli/projects/MonAppli/SH

#Mes scripts
20 09 * * * $MonDossierKSH/script1.ksh
30 09 * * * $MonDossierKSH/script2.ksh

et non à :
$MonDossierKSH/script1.ksh
$MonDossierKSH/script2.ksh
$MonDossierSH/script1.sh

Non ?

Donc, comment arrives-tu au format de ton fichier monFic.txt ?
0
Pedrolitino Messages postés 6 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 4 février 2016 > zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
3 févr. 2016 à 17:42
Voici le code :

#Récupère seulement les taches
grep "^[0-9]\|^\*" $ficCrontab > $ficCrontab_OnlyTask

#Boucle pour analyser chaque tache
while IFS=" " read minuteCron heureCron jourMoisCron moisCron jourSemaineCron tache reste
do
	fc_analyse_crontab #Analyse pour savoir si la tache est à rejouer
	jobActif=$?
	if [[ $jobActif -eq 0 ]]
	then
		echo -e "$tache \n" >> monFic.txt
	fi
done < $ficCrontab_OnlyTask

0