2013-03-15 215 views
5

如下面我shell腳本:如何將變量從shell腳本傳遞到期望腳本?

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

在上面的腳本中,我從用戶輸入選擇&獲取網關試圖傳遞給我的abc.sh腳本是指望下面scriptshown:

#!/usr/bin/expect 

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

但我無法從shell腳本傳遞網關變量以期望腳本。任何人都可以告訴我如何實現這一目標?請注意,我需要使用shell腳本只是由於傳統的原因(不能使用TCL腳本或期望腳本本身不能做的一切)

回答

12

從你的shell腳本:

/mypath/abc $gateway 

從你期望的腳本:

#!/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 
相關問題