这是一个非常简化的示例:
# 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的位置参数.