Primeiro, você deseja $test
em vez de test
nas linhas screen
do seu script.
O comando -X está esperando comandos screen , e não shell . Você pode olhar através da página de manual e descobrir como dizer à tela para digitar os caracteres no shell em execução; provavelmente é possível, mas não consegui encontrá-lo em alguns minutos. (aha, é o comando "stuff" da tela: Envio de entrada para uma sessão de tela externa )
Como alternativa, você pode fazer algo assim:
#!/bin/bash
for i in 1 2 3
do
test="test"$i
screen -dmS $test ./my_command $i
done
que executará um nu ./my_command $ i em uma nova janela de tela.
Você também pode usar uma linha de comando assim:
screen -dmS $test sh -c "ulimit 1234;./my_command $i; exec /bin/bash"
sh -c "foobar"
fará com que um novo shell seja executado e execute o comando foobar
. Aqui nós executamos vários comandos shell. O% final exec /bin/bash
inicia outro shell para que você não perca a tela se ./my_command sair.