2013-03-15 8 views
5

I Shell-Skript haben, wie unten:Wie übergibt man Variablen von einem Shell-Skript an ein Expect-Skript?

#!/bin/bash 

echo "Select the Gateway Server:" 
echo " 1. Gateway 1" 
echo " 2. Gateway 2" 
echo " 3. Gateway 3" 

read gatewayHost 

case $gatewayHost in 
    1) gateway="abc.com" ;; 
    2) gateway="pqr.com" ;; 
    3) gateway="xyz.com" ;; 
    *) echo "Invalid choice" ;; 
esac 

/mypath/abc 

In obige Skript, ich holen Gateway von Benutzereingabe Auswahl & versucht, mein abc.sh Skript übergeben, die unter scriptshown erwarten ist:

#!/usr/bin/expect 

set timeout 3 
spawn ssh "[email protected]$gateway" 
expect "password:" 
send "TSfdsHhtfs\r"; 
interact 

Aber ich bin nicht in der Lage Gateway Variable von Shell-Skript übergeben, um Skript zu erwarten. Kann mir jemand sagen, wie man das erreicht? Bitte beachten Sie, dass ich nur wegen legacy Gründen Shell-Skript verwenden (nicht Tcl-Skript oder kann nicht alles tun, was in erwarte Skript selbst verwenden)

Antwort

12

Von Ihrem Shell-Skript:

/mypath/abc $gateway 

Von Ihrem erwarten Skript :

#!/usr/bin/expect 

set gateway [lindex $argv 0]; # Grab the first command line parameter 

set timeout 3 
spawn ssh "[email protected]$gateway" 
expect "password:" 
send "TSfdsHhtfs\r"; 
interact