2016-07-27 13 views
1

私の期待するスクリプトの問題を解決するための助けを受けたいと思います。スクリプト環境変数の問題が予想されます

私のLinuxのtermialで "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

は、あなたのスクリプトの送信 "LCD $ INFO_HME/infa_shared/SrcFiles \ N" に従ってこのmistake-をクロスチェックしてくださいすることができ、私は正しい変数は$ INFA_HOMEされるべきだと思います。これはinformatica env変数であり、informaticaを稼働している場合は設定する必要があります。あなたがおそらくいくつかの間違いを見ることができる変数。 – 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

関連する問題