可以期待生成bash函数吗?

这是一个非常简化的示例:

# expect -c "spawn socat -v -,raw,echo=0,nonblock /dev/ttyS0; interact"

Expect执行一个嵌入式脚本,该脚本生成socat以便连接到串行设备.但是,如果我们有一个称为serial的bash函数(这非常方便),该怎么办:

# serial(){ socat -v -,raw,echo=0,nonblock /dev/ttyS0;}
# expect -c "spawn serial; interact"
spawn serial
couldn't execute "serial": no such file or directory
    while executing
"spawn serial"

是否可以强制期望在没有包装脚本或二进制文件的情况下执行功能?

解决方法:

要在spawn中运行bash函数或内置函数,必须使spawn成为运行该函数或内置函数的bash子进程.这是通过bash的-c选项完成的,它使您可以提供一些内联脚本来运行bash.

spawn bash -c "serial"

请记住,-c之后的单个参数是要运行的内联脚本.之后的参数将分配给bash的位置参数.

上一篇:linux-Multixterm-“找不到包Expect”


下一篇:java-是否存在有关如何使用Expect4j库的真实文档或代码示例?