如何在循环中附加到屏幕会话?

时间:2012-02-22 20:44:27

标签: linux bash session loops gnu-screen

我使用bash脚本以“分离”模式生成屏幕会话(使用-d -m选项) 并命名它们(通过-S)然后我附加给它们以给出一些命令 (通过-r):

#!/bin/bash
screen -d -m -S session_name_1
screen -d -m -S session_name_2
screen -d -m -S session_name_3
...
screen -r session_name_1
screen -r session_name_2
screen -r session_name_3

当我以循环方式完成整个过程时,我无法附加到屏幕上 (文件 session_names.txt 是每行包含会话名称的文件):

#!/bin/bash
while read line; do
  echo $line
  screen -d -m -S $line
done < session_names.txt

while read line; do
  echo $line
  screen -r $line
done < session_names.txt

我无法附加到屏幕上并发生此错误:

  

“必须连接到终端。”

我如何克服这个问题以及为什么会出现这个问题?

1 个答案:

答案 0 :(得分:2)

在整个循环中,标准输入来自txt文件,因此屏幕没有看到终端。

这应该这样做,但请注意'line'在这里的确意味着'word'。

for line in `cat session_names.txt`; do
  echo $line
  screen -r $line
done
相关问题