Eric
Eric

Reputation: 2338

Launch multiple scripted screen sessions from another script

I've written a script (that doesn't work) that looks something like this:

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

If I copy and paste this into a terminal, it creates 7 detached screen sessions, as I expect. If I run it from within a script, however, I get only the first session, "somename," when I run screen -ls. I realize screen can be used to create multiple windows within one session. It doesn't really matter to me how these scripts get run. I just want to get to the bottom of why this doesn't work as a script.

Note: I've asked this question on SuperUser without any suitable responses. I figured maybe that's the wrong place to ask what could be considered a programming question.

Upvotes: 2

Views: 2517

Answers (1)

Brian Gerard
Brian Gerard

Reputation: 885

One thing you might be getting bitten on is which specific version of which specific shell you're running. /bin/sh could actually be bash, or it could be bourne, and that can make a difference on how your loop syntax is interpreted. The {0..5} construct isn't understood in older versions of bash (v2.x), for instance, nor in bourne (at least it wasn't when I finally managed to track down a /bin/sh that was a real, live bourne shell :-).

My suggestion is to change your shebang line to /bin/bash if you need its syntax, and check that your bash is version 3.x or later. Since you say it works from the commandline, my bet is on the shebang line, though.

Upvotes: 5

Related Questions