linux - 如何在循环中附加到 screen session ?

标签 linux bash session loops gnu-screen

我使用 bash 脚本以“分离”模式生成 screen session (使用 -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

当我以循环方式执行整个过程时,我无法连接到 screen (文件 session_names.txt 是一个每行包含一个 session 名称的文件):

#!/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

我无法附加到 screen 并发生此错误:

"Must be connected to a terminal."

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

最佳答案

在整个循环中,标准输入来自 txt 文件,因此 screen 看不到终端。

应该这样做,但请注意,“行”在这里的真正意思是“单词”。

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

关于linux - 如何在循环中附加到 screen session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402622/

相关文章:

linux -/proc文件系统中文件的时间戳是否表示参数采样的时间?

c++ - getaddrinfo, AI_PASSIVE - 不同的行为 windows <-> linux

session - 注销时具有数据库 session 1.2.0和Spring安全核心的Grails 2.1中的InvalidatedSessionException

node.js - 无法识别 Ember-CLI 安装

bash - 使用 shell/bash 脚本终止谷歌云计算引擎实例

bash - 如何显示另一个命令的进度

ios -/bin/sh : : No such file or directory Splunk MINT SDK

asp.net-mvc - .NET 自定义成员资格与。自定义登录/注册 : Authentication/Authorization

java - 使用 Struts2 将 Session 对象保存在 Cookie 中

python - 将批处理代码转换为 python 脚本