从另一个脚本启动多个脚本化屏幕会话

时间:2011-07-26 18:03:20

标签: linux bash gnu-screen

我写了一个看起来像这样的脚本(不起作用):

#!/bin/sh

screen -dmS "somename" $HOME/somescript.sh

j=13
for i in {0..5}; do
    screen -dmS "name$i" $HOME/anotherscript.sh $i $j
    j=10
done

如果我将其复制并粘贴到终端中,它会创建7个分离的屏幕会话,正如我所料。但是,如果我在脚本中运行它,那么当我运行screen -ls时,我只获得第一个会话“somename”。 我意识到屏幕可用于在一个会话中创建多个窗口。这些脚本如何运行对我来说并不重要。我只是想了解为什么这不能用作脚本。

注意:我在没有任何合适的回复的情况下在SuperUser上提出了这个问题。我想也许这是一个错误的地方,可以被认为是一个编程问题。

1 个答案:

答案 0 :(得分:4)

可能被咬的一件事是您正在运行哪个特定shell的特定版本。 /bin/sh实际上可能是bash,或者它可能是bourne,这可能会对你的循环语法的解释产生影响。例如,在旧版本的bash(v2.x)中也没有理解{0..5}构造,也没有在bourne中理解(至少在我最终设法追踪/bin/sh时不是这样。一个真实的,真实的伯恩贝壳: - )。

我建议如果你需要它的语法,请将你的shebang行更改为/ bin / bash,并检查你的bash是版本3.x或更高版本。既然你说它可以从命令行开始工作,那么我的赌注是在shebang线上。