Eri*_*ric 2 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
Run Code Online (Sandbox Code Playgroud)
如果我将其复制并粘贴到终端中,它会创建 7 个分离的屏幕会话,正如我所期望的。但是,如果我从脚本中运行它,当我运行screen -ls
. 我意识到 screen 可用于在一个会话中创建多个窗口。这些脚本如何运行对我来说并不重要。我只是想弄清楚为什么这不能作为脚本工作。
注意:我在 SuperUser 上问过这个问题,但没有任何合适的回答。我想也许这是问什么可以被视为编程问题的错误地方。
您可能会遇到的一件事是您正在运行哪个特定 shell 的哪个特定版本。 /bin/sh
实际上可能是 bash,也可能是 bourne,这可能会对您的循环语法的解释方式产生影响。{0..5}
例如,在旧版本的 bash (v2.x) 和 bourne 中都无法理解该构造(至少当我最终设法找到/bin/sh
一个真实的、实时的 bourne shell 时是这样的:-)。
我的建议是,如果您需要语法,请将您的 shebang 行更改为 /bin/bash,并检查您的 bash 是否为 3.x 或更高版本。既然你说它可以从命令行运行,那么我的赌注是在 shebang 线上。