我花了一天的大部分时间到处寻找答案,但到目前为止没有任何效果。我要做的是运行一个将附加到 GNU 屏幕会话的期望脚本,向它发送命令行参数(一个命令),并输出该命令的结果。到目前为止,这是我的脚本之一:
#!/usr/bin/expect -f
set timeout 3
#exp_internal 1
spawn screen -raAd call_sess
sleep 1
expect -re "\\\$" {
send $argv
send "\n"
sleep 1
}
expect -re ".*" {
set output $expect_out(0,string)
}
expect "\$" {
send "\001"
send "d"
}
expect eof {
puts "OUTPUT---------------"
puts $output
puts "OUTPUT---------------"
}
并且 $expect_out(0,string) 只匹配换行符,即使 .* 应该匹配自上次匹配以来的所有内容。如果有人可以帮助我完成这项工作,那将是很棒的,我准备放弃并称其为不可能。
编辑:在评论中回答,但我应该指定命令确实在屏幕上运行,我只是无法正确捕获输出。
EDIT2:按照建议将脚本更改为生成屏幕,谢谢!