我正在编写一个脚本,它会生成几个独立的屏幕会话,以便在里面运行交叉通话软件 . 软件的每个实例都具有交互行为:几个击键可以处理“设备”状态(例如'r'重置设备状态,'q'干净地杀死设备等) .

我已经确认一切都可以正常生成设备 .

在我的脚本结束时,我想向每个会话发送'q'击键,以便以正确的方式停止设备,然后,分离屏幕会话 .

我遇到的是,我发送'q'与以下代码:

screen -S <session_name> -p 0 -X stuff "q"

或者我重新连接到会话并按键盘上的'q',结果是一样的 . 击键被解析为空字符,设备开始挂起,反复询问正确的选项 .

即使设备的行为如果得到不正确的选项也没有得到很好的处理(看起来像一个无限循环),我想我错过了一些关于屏幕输入解析的东西 .

那么问题是:

How is one supposed to simulate a keystroke in a detached screen session?

先感谢您

更新:在我看来,问题是由“-dm”屏幕选项引起的 . 如果我创建一个屏幕会话,我在里面运行命令,我分离它然后重新连接并按'q'一切都很好 .