Bonjour,

je lance dans mon script shell un expect pour faire du SFTP.
J'utilise dans cet expect une variable shell mais une fois dans l'expect elle n'est plus reconnue. Le message

sftp> cd /sldbfil2/data/mutualise/out/tms/TgtFiles/JTMSi
Couldn't canonicalise: No such file or directory
Ici c'est le "i" de JTMSi qui devrait être remplacé par la valeur de la variable $i, "F" en l'occurence.

Voici le script :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
else   
  for i in ${cube[@]}
  do
    case "$i" in 
      "F"|"E"|"M"|"Q")
        cd /home/ess_tms/temp/JTMS$i
 
#Début du script SFTP sous expect
/usr/bin/expect <<'EOF'
set timeout 5
set USER user
set PASS datastage
set HOST host
#positionnement dans le répertoire source du serveur Informatica où les fichiers sont présents
set INF_PATH_OUT /sldbfil2/data/mutualise/out/tms/TgtFiles
spawn sftp $USER@$HOST
expect password:
send "$PASS\r"
    
expect sftp>
#Positionnement dans le dossier où le fichiers doivent être déposés par le STFP et à partir duquel le .ksh doit être exéxuté
send "cd $INF_PATH_OUT/JTMSi\r" 
     
expect sftp>
send "get *.txt\r"
 
expect sftp>
send "exit\r"
EOF
 
        rm -f /home/ess_tms/temp/JTMS$i/*.gz
        mv /home/ess_tms/temp/JTMS$i/TMSMDAI.txt /home/ess_tms/temp/JTMS$i/DB_IND.txt
C'est ligne 22 que ça plante.

Savez vous dans ce cas somment faire pour que dans mon expect il lise bien la valeur de "$i" définie plus haut dans le shell ?

J'ai lu quelque part un truc comme
in the expect script:
replace $HOSTNAME with $env(HOSTNAME)
http://www.linuxmisc.com/12-unix-she...7163351024.htm
mais j'ai essayé et çà fonctionne pas. Peut être je l'utilise mal aussi ?

Merci !