bash - Shell 脚本启动 1 个具有多个窗口的 session

标签 bash shell gnu-screen

我是 shell 脚本的新手(您可能会说我才刚刚开始)。 我需要的是编写一个 shell 脚本来只打开 1 个“screen ” session 。然后我想在同一个 session 中打开多个窗口(比如 10 个)并让每个 session 做一些事情,例如打印“你好”。 所以这是我的代码的一部分,但它只创建一个窗口 (0) 并且不在该窗口上打印任何内容:

#!/bin/bash
screen-d -m -S mysession
for n in {1..10}; do
    i=$(($n-1))
    screen -S mysession -p $i -X echo "hello"
done

正如我所说,我的示例代码不起作用!它打开一个 session ,只有一个窗口“0”,并且窗口“0”上的终端上没有打印任何内容。

你能帮我一些忙吗?该代码应该打开一个 screen session ,然后在循环中打开 10 个窗口并在每个窗口中打印“hello”。

提前致谢!

阿贝丁

最佳答案

-X选项可以发送的命令不是shell命令而是screen命令。

检查 man screen 中的 CUSTOMIZATION 部分以查看 screen 命令列表。 以下代码使用 screen 命令创建新窗口,使用 stuff 命令在窗口上显示文本。

#!/bin/bash
screen -d -m -S mysession
# window 0 is created by default, show hello0 on it
screen -S mysession -p 0 -X stuff hello0
for n in {1..9}; do
  # create now window using `screen` command
  screen -S mysession -X screen $n
  screen -S mysession -p $n -X stuff hello$n
done

现在您可以附加到 myscreen session 并检查是否有 10 个窗口并且 hello0 .. hello9 显示在每个窗口中。

$ screen -r mysession
[Press C-a "]

关于bash - Shell 脚本启动 1 个具有多个窗口的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418537/

相关文章:

bash - mv: 无效选项 -- '0'

bash - 如何更改特定字符序列的 bash 输出颜色

linux - 如何在多个主机上使用 ssh 和 xargs 运行 bash 脚本而不将脚本复制到每个主机?

terminal - 如何在Debian下在GNU screen 中获得40多个窗口

linux - 如何在正在运行的 screen session 中增加回滚缓冲区?

json - 如何用jq提取一个json值子串

python - 从 docker-compose 运行时容器以代码 0 退出

linux - 在 Bash 中打印所有关键字

java - 使用java运行shell脚本时出现问题

linux - 可以阅读 linux gnu-screen 的最后一行吗?