我是 shell 脚本的新手,想使用 screen 命令来自动执行以下场景:
- 创建屏幕
session1
并执行 shellscript1
- 创建另一个屏幕
session2
并执行另一个 shellscript2
,如果结果成功,则转到屏幕并按 Enter 键session1
恢复。script1
使用屏幕可以实现这一点吗?请提供建议如何实现这一点。
答案1
这也许是可能的,但我不知道你为什么要这么做。
这完全取决于这是对现有脚本进行自动化的尝试,还是从头开始编写的内容,或者完全是新产品的架构?
如果是前者,我会说编辑现有脚本(你确定它们实际上是脚本吗?)会更容易,不用那样等待,或者将一个脚本的逻辑整合到另一个脚本中。
如果是后者,那么你做错了,应该使用一些不涉及按键的其他 IPC(进程间通信)机制。
答案2
您可以使用screen -X stuff '\n'
向正在运行的屏幕会话发送换行符。
我将编写一个包装脚本,该脚本启动后如果脚本成功终止则script2
发送换行符:session1
#!/bin/bash
./script2 && screen -S session1 -X stuff '\n'
下面两个命令可以执行您想要的操作:
screen -S session1 -d -m ./script1
screen -S session2 ./wrapper