Não sei exatamente o que você quer que aconteça - você deseja um script que cria a sessão de tela com duas janelas para dois comandos ou deseja executar um script em uma janela de tela que executa um comando e cria um novo janela para o segundo?
O segundo é fácil, então vamos começar com isso:
#!/bin/bash
command1
screen command2
A execução de "tela" dentro da tela criará uma nova janela na sessão atual, não iniciará uma nova. Mas ele retornará imediatamente, portanto, após a última linha, o script será encerrado enquanto o comando2 ainda estiver em execução. E quando o comando2 for concluído, sua janela será fechada.
De qualquer maneira, a primeira interpretação da sua pergunta é um pouco mais difícil, então vamos em frente e resolva o exposto acima:
#!/bin/bash
# Need to positively identify the session name:
SESSION=mysession.$$
echo "TO ATTACH TO SESSION: screen -r ${SESSION}"
# For signalling and stuff
FLAGDIR=$(mktemp -d)
# To keep the windows around after the commands are done,
# set the "zombie" option (see the man-page)
echo "source $HOME/.screenrc" > ${FLAGDIR}/screenrc
echo "zombie xy" >> ${FLAGDIR}/screenrc
# Use that temporary screenrc; create a detached session:
screen \
-c ${FLAGDIR}/screenrc \
-d -m \
-S ${SESSION} \
bash -c "command1 ; touch ${FLAGDIR}/done"
# Wait for command1 to terminate
while [[ ! -f ${FLAGDIR}/done ]] ; do sleep 1 ; done
# Now start command2 in a new window, by sending a remote command:
screen -S $SESSION -X screen command2
# Don't need this any more:
rm -rf ${FLAGDIR}
O script será iniciado command1
, espere até terminar e, em seguida, inicie command2
e saia. Como se você corresse command1 ; command2 &
, mas com a saída em outro lugar. Tenho certeza que você pode descobrir como executar command1
em segundo plano.