2016-07-27 330 views
1

我想接受幫助解決我的期望腳本問題。Expect腳本環境變量問題

當我在我的linux終端上使用命令「env」時,我可以看到$INFO_HME/app/informatica/etldev/9.1/server

,但我無法使用$INFO_HME它在我期待的腳本和得到錯誤。我的腳本如下所示。

我推測,$INFO_HME將在lcd命令中替換爲/app/informatica/etldev/9.1/server

#!/usr/bin/expect 
spawn /usr/bin/sftp <ID_Here>@<Host_Here> 
expect "password:" 
send "<Password_Here>\n" 
expect "sftp>" 
send "lcd $INFO_HME/infa_shared/SrcFiles\n" 
expect "sftp>" 
send "cd \"/Source/client\"\n" 
expect "sftp>" 
send "get file.csv\n"; 
expect "sftp>" 
send "quit\n" 

錯誤消息:

sftp> can't read "INFO_HME": no such variable 
    while executing 
"send "lcd $INFA_HOME/infa_shared/SrcFiles\n"" 
    (file "Scr_Webcore_SFTP.sh" line 7) 

深深感謝所有幫助解決這個問題。

+0

能否請您交叉檢查這mistake-按照腳本派「液晶$ INFO_HME/infa_shared/SrcFiles \ n」,我認爲正確的變量應該是$ INFA_HOME。這是informatica env變量,如果您已啓動並運行了信息庫,則必須設置它。你可以看到的變量可能有些錯誤。 – Koushik

+0

我已經檢查過它。這沒有問題。通過使用以下方法解決問題 – aks

回答

2

要在Expect(和Tcl)中使用env var,您應該使用$env(VARNAME)(或在功能中爲$::env(VARNAME))。例如:

[bash] # export FOO=bar 
[bash] # expect -c 'puts $env(FOO)' 
bar 
[bash] # expect -c 'puts $::env(FOO)' 
bar 
[bash] # 
+0

謝謝。這個問題似乎是通過使用上述方法來解決的。 – aks