Bonjour,
j'ai déclaré une variable dans un fichier et je voudrais savoir s'il est possible de l'utiliser dans un autre fichier?
Version imprimable
Bonjour,
j'ai déclaré une variable dans un fichier et je voudrais savoir s'il est possible de l'utiliser dans un autre fichier?
Il ressemble à quoi ton premier fichier ?
Habituellement, quand on utilise un fichier de configuration en shell, on "source" ce fichier de conf pour récupérer ces variables :
Code:
1
2
3 fichier.conf : TITI=valeur1 TOTO=valeur2
Code:
1
2
3
4
5 script.sh #!/bin/ksh . fichier.conf echo $TITI echo $TOTO
Voici mon 1er fichier:
Dans ce fichier je déclare la variable FIC et j'aimerais recupréer cette variable dans mon fichier corps.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 for nom in $(ls -1art $rep/fichier_num*.[Tt][Xx][Tt]) do FIC = ${nom:30:3} echo "LOAD DATA INFILE '$nom' STREAM BADFILE '$LOGS/fichier.BAD' DISCARDFILE '$LOGS/fichier.DISCARD'" > $SRC_SQLLOADER/Chargement.ctl cat $SRC_SQLLOADER/corps >>$SRC_SQLLOADER/Chargement.ctl #sqlload $REF $SRC_SQLLOADER/Chargement.ctl log=$LOGS/fichier.LOG done;
Est ce possible?
C'est quoi ton fichier corps ? Quelle est la relation entre les 2 fichiers ? A priori, si tu fais ". fichier1" dans ton fichier corps, ça devrait passer (globalement, le . correspond à un include d'un fichier dans un autre).
Je ne sais pas si c'est intentionnel, mais les espaces avant et après le signe = là où tu définis FIC ne vont pas passer.
Mon fichier corps est le suivant:
je ne pouvais pas mettre ça à la suite de mon fichier car sinon les guillemet ne sont pas pris en compte.Code:
1
2
3
4
5
6
7
8
9
10 TRUNCATE INTO TABLE NOM_TABLE (Val1 POSITION(1:11), val2 POSITION(22:56), DATE_SAISIE POSITION(13:20) DATE "yyyymmdd", val3 POSITION(58:62), val4 POSITION(75:82), val5 POSITION(84:91), val6 INTEGER EXTERNAL "$FIC.fichier" , val7 CHAR ":val6||'/'||:val3||'/'||:val1||'.TIF'")
Pour ma valeur6 j'ai mis $fic.fichier mais il n'arrive pas à la lire.
Si je comprends bien, ton fichier corps n'est pas un script shell, mais une commande SQL Loader, c'est bien ça ? Dans ce cas, tu ne peux pas faire ce que tu cherches à faire, car c'est SQL Loader qui va interpréter ton fichier corps et il ne sait pas faire ce que tu lui demandes de faire.
Tu dis que tu as un problème avec les guillemets quand tu mets ta commande à la suite de ton fichier : as-tu essayer de les "escaper" en mettant un \ devant ?
Génial ça marche :D
Donc je peux maintenant mettre directemenbt ma variable?
je vais essayer...
En tout cas merci pour les \!
super ça marche.
MERCI VRAIMENT BEAUCOUP!
Il me semblait que cette solution là tu l'avais déjà eue dans cette réponse là :roll:
oui mais ne n'avais pas essayé :roll: car j'ai été ensuite sur le forum oracle où on m'a donné d'autres indications..