期待功能bash

时间:2016-08-26 08:36:00

标签: bash expect

我试图用这种风格做一个bash脚本:

spawn etc 
expect "something"
send -- "something " 
etc

但我想做

send -- function()

这怎么可能?

谢谢

1 个答案:

答案 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中导出函数。