是否可以通过使用expect发送控制序列来分离tmux会话?

问题描述 投票:0回答:1

考虑以下

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,就像我在键盘上键入它时发生的情况一样?

expect tmux
1个回答
0
投票

我稍微摆弄了一下,经验证据表明问题出在

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
© www.soinside.com 2019 - 2024. All rights reserved.