期待脚本环境变量问题

时间:2016-07-27 21:20:04

标签: expect

我希望得到帮助来解决我的期望脚本问题。

当我在linux termial上使用命令“env”时,我可以看到$INFO_HME/app/informatica/etldev/9.1/server

但我无法在我的期望脚本中使用$INFO_HME并收到错误。我的脚本如下所示。

我认为,$INFO_HME将在/app/informatica/etldev/9.1/server命令中被重新标记为lcd

#!/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)   

非常感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分: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] #