考虑以下
expect
脚本:
spawn bash
expect " \$"
send "tmux\r"
expect " \$"
send "echo hello\r"
send "\x02"
send "d"
interact
我希望这个脚本创建一个 tmux 会话,执行“echo hello”,然后分离。 前两部分效果很好,但我没有分离,而是在终端上得到了文字字符
^Bd
。
expect
是否可以将Control-B, d
序列发送到tmux,就像我在键盘上键入它时发生的情况一样?
我稍微摆弄了一下,经验证据表明问题出在
tmux
而不是 expect
,但是 expect
可以通过添加一点延迟来解决这个问题。
特别是,如果
expect
在上一个命令终止后太快地发送序列,则 tmux
不会解释该序列而是回显它。奇怪的是,screen
没有这个问题。
spawn bash
expect " \$"
send "tmux\r"
expect " \$"
send "echo hello\r"
# Wait for prompt and then sleep a bit.
expect " \$"
sleep 0.1
send "\x0b"
send "d"
interact