我试图用这种风格做一个bash脚本:
spawn etc
expect "something"
send -- "something "
etc
但我想做
send -- function()
这怎么可能?
谢谢
答案 0 :(得分:2)
bash和expect是不同的语言,并期望不能神奇地触及其父级来获取一些代码。
但是,如果您导出该功能,您可以(最终)使用它:
bash:定义函数
$ function foo { echo bar; }
$ foo
bar
无法导出,尝试使用它
$ expect
expect1.1> foo
invalid command name "foo"
while executing
"foo"
expect1.2> exec bash -c foo
bash: foo: command not found
while executing
"exec bash -c foo"
expect1.3> exit
现在,导出功能
$ export -f foo
$ expect
expect1.1> exec bash -c foo
bar
现在,你可以这样做:
send -- "[exec bash -c your_function]\r"
但关键是:在父shell中导出函数。