我希望得到帮助来解决我的期望脚本问题。
当我在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)
非常感谢您解决此问题的任何帮助。
答案 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] #