Executa o comando shell em subshell ou em segundo plano?

1

Na verdade eu trabalho principalmente com Ruby, mas agora eu criei um arquivo de script bash. A partir desse arquivo de script, estou exibindo as mensagens na tela. Aqui está o meu cenário.

Eu usei o módulo aosd_cat para exibir as mensagens na tela e fiz isso com sucesso. Para isso, usei a documentação .

Aqui está o meu arquivo de script message.sh :

#!/bin/bash
function message_1(){
  if [ condition ]
    echo 'message -1' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
  else
    echo 'message -4' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
  fi
}

function message_2(){
  echo 'message -2' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
}

function message_3(){
  echo 'message -3' | DISPLAY=:0 aosd_cat -u 10000 -e 2 -t 2 -R 'Green' -n 'Arial Bold 20' -p 0 -x 10 -y 60
}

# As I have to display messages continuously
while true
do
  message_1
  message_2
  message_3
done

Após a execução, percebo que as mensagens estão sendo exibidas uma a uma (message_1 está sendo exibida primeiro, em seguida, message_2 e, em seguida, message_3).

Eu tenho que exibir todas as mensagens ao mesmo tempo. Para conseguir isso, eu acho que posso executar esses comandos em subshell / como subprocesso / em segundo plano (para que ele não afete outros processos).

Em ruby temos o comando do sistema que executa o determinado comando em um subshell. Como posso conseguir esse tipo de funcionalidade no arquivo de script bash?

    
por Shrikant1712 21.05.2014 / 13:05

1 resposta

2

Você pode fazer assim:

  bash -c command

mas no seu caso, talvez enviar o comando para o fundo seja suficiente:

  command &
    
por 21.05.2014 / 13:16