如何从一个shell脚本变量传递到期望的脚本?(How to pass variables from

2019-07-21 15:56发布

我有如下的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

在上面的脚本中,我从用户输入选择获取网关与试图传递给我的这是指望scriptshown下面abc.sh脚本:

#!/usr/bin/expect

set timeout 3
spawn ssh "james@$gateway"
expect "password:"
send "TSfdsHhtfs\r";
interact

但我无法从shell脚本通过网关变量的期望脚本。 任何一个可以告诉我如何实现这一目标? 请注意,我需要使用shell脚本只是由于传统的原因(不能使用TCL脚本或期望脚本本身不能做的一切)

Answer 1:

从你的shell脚本:

/mypath/abc $gateway

从你期望的脚本:

#!/usr/bin/expect

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

set timeout 3
spawn ssh "james@$gateway"
expect "password:"
send "TSfdsHhtfs\r";
interact


文章来源: How to pass variables from a shell script to an expect script?