Bonjour à tous,
Voilà, j'ai un problème de passage de variable vide à un script sh à l'intérieur d'un autre script sh.
Explication :
Dans le premier script, je créé plusieurs variables tableau et dans une boucle, j'utilise leurs valeurs en les passant à un script que j'appelle dans cette même boucle.
Jusque là, pas de problème.
Seulement, lorsque la tableau à un certain index contient une valeur nulle, c'est comme si aucun paramètre n'était passé au script.
Cela a pour conséquence dans le script appelé de décalé les valeurs des paramètres.
Par exemple : Si le paramètre 3 est vide dans la ligne d'appel, alors dans le script appelé, ce qui devait contenir la valeur du paramètre 3 contiendra la valeur du paramètre 4. D'où le décalage.
La solution serait donc de protéger les valeurs passées entre deux "quote".
Mais comme un problème n'arrive jamais seul, l'un des paramètres est le chemin complet d'un fichier de log.
Donc si je protège mes paramètres avec des "quote", dans le script appelé, la valeur du paramètre en question sera de la forme 'un/chemin/vers/le_fichier.log'
Et apparemment, cette forme avec les deux "quote" pose un problème lors du test d'existence du fichier.
Voici un petit bout de code illustrant le test :
Or le fichier existe bien et pourtant à l'exécution, le code à l'intérieur de la boucle est exécuté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 PSHOME=$1 AS=$2 PS=$3 CMD=$4 PURGE=$5 SCR_LOG=$6 TYPE=$7 SSH_USER=$8 SERVER=$9 ERROR=0 EDATE=`date '+%d-%m-%Y_%Hh%M'` echo 'SCR_LOG = '$SCR_LOG #Si le fichier n'existe pas if ! [[ -f $SCR_LOG ]]; then #Du code fi
Il y aurait bien une solution en testant la valeur du paramètre avant de le passer au script appelé, mais ce n'est pas une solution très sexy.
Alors si quelqu'un aurait une solution propre à me proposer, je suis preneur.
Merci à tous
Bonne journée
Partager