備忘メモとして書いておく。結論だけ言えばtclと同じなので
set ENV_VAL_IN_EXPECT $env(ENV_VAL_IN_SHELL)
でexpect内の変数 ENV_VAL_IN_EXPECT にシェルの環境変数 ENV_VAL_IN_SHELL がsetされる。
たとえばサーバーに入って特定のプロセス(例:suspect_process_name)を強制的に殺すスクリプトだとこんな感じになる。
#!/usr/bin/expect
set TARGET_HOST_IP $env(TARGET_HOST_IP)
set timeout 5
spawn ssh -o "StrictHostKeyChecking no" sohgoh@$TARGET_HOST_IP
expect "sohgoh@$TARGET_HOST_IP's password:"
send "input_your_password\n"
expect "yourhost:~ sohgoh$"
send "killall -9 suspect_process_name ; exit\n"
interact
※いまどきパスワード認証なんか使わないけど、例ってことで
set ENV_VAL_IN_EXPECT $env(ENV_VAL_IN_SHELL)
たとえばサーバーに入って特定のプロセス(例:suspect_process_name)を強制的に殺すスクリプトだとこんな感じになる。
#!/usr/bin/expect
set TARGET_HOST_IP $env(TARGET_HOST_IP)
set timeout 5
spawn ssh -o "StrictHostKeyChecking no" sohgoh@$TARGET_HOST_IP
expect "sohgoh@$TARGET_HOST_IP's password:"
send "input_your_password\n"
expect "yourhost:~ sohgoh$"
send "killall -9 suspect_process_name ; exit\n"
interact
※いまどきパスワード認証なんか使わないけど、例ってことで