我正在尝试从shell脚本在不同的屏幕上启动一些作业。每个作业将从预制输入文件中读取参数的不同值,并基于该值运行模拟,然后是tee或>输出到不同命名的文件。因此,在围绕所有工作的do循环中,屏幕上的作业40" session40"例如,将读入输入文件的第40行,运行模拟,并输出到output40.dat。 (我基本上试图以非常基本的方式并行运行一些作业;看起来我的计算机有足够的RAM用于此)。
我遇到的问题是>和|当我使用" exec"时,tee命令似乎不起作用。在远程屏幕上运行命令,尽管试图在那里启动bash shell;当我使用这些命令时,它只是打印到标准输出。虽然这些命令可以使用命令" stuff,"我不知道如何将作业号传递给东西,因为它似乎只能用于字符串输入。
当前尝试的脚本如下。我已将模拟脚本替换为echo
和>
,以获得更简单的问题示例。最后两个屏幕线都不起作用。
for i in 1:10; do
screen -Sdm session$i bash
screen -S session$i -X exec echo $i > runnumber$i.output (method 1)
screen -S session$i -X stuff $'echo $i > runnumber$i.output\r' (method 2)
done
可能有一个简单的解决方法吗?