该echo
测试表明了我的命令行变量的工作,但我如何通过它们,它们导出,以在使用的包埋expect
?
#!/bin/bash
echo name of script is $0
echo host is $1
echo hostusername is $2
echo hostpassword is $3
expect -c 'spawn ssh -l $2 $1 < ./sf-wall_scp_bash.sh
sleep 2
expect {
"(yes/no)? " {send "yes\n"}
exp_continue
}
expect {
"?assword" {send "$3\r"}
}
sleep 1
'
如果与调用expect
家当,它就像
#!/usr/bin/expect
set host [lindex $argv 0]
set hostusername [lindex $argv 1]
set hostpassword [lindex $argv 2]
spawn ssh -l $hostusername $host
sleep 2
expect {
"(yes/no)? " {send "yes\n"}
exp_continue
}
expect {
"?assword" {send "$hostpassword\r"}
}
sleep 1
......如预期其工作。 我需要使用bash
,但并嵌入expect
,因为脚本是需要调用的bash特定的命令,功能,内置变量...否则简单地使用第二个例子是一个工作的选项,但事实并非如此。
我试着声明和出口的命令行参数变量,并分别与上述第一个例子改变$ 1,$ 2,$ 3到报关出口的变量名,这在另一个脚本我已经在我实际上宣告中的变量工作剧本......区别在于他们没有命令行参数。
host=$1
export host
hostusername=$2
export hostusername
hostpassword=$3
export hostpassword
还有刚才他们出口
export host
export hostusername
export hostpassword
并试图上面的第一个例子。 没有变化, expect
将继续要求
无法读取“X”:没有这样的变量
在另一个bash脚本,我能够双方宣布它们,然后把它们导出在上面的例子中顺利出口变量。 但我一直没能有任何这样的运气与合格bash
命令行参数变量,以expect