1

На самом деле я в основном работаю с Ruby, но сейчас я создал файл сценария bash. Из этого файла сценария я отображаю сообщения на экране. Вот мой сценарий.

Я использовал модуль aosd_cat для отображения сообщений на экране, и я сделал это успешно. Для этого я использовал их документацию .

Вот мой файл сценария 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

После выполнения я получаю, что сообщения отображаются по одному (сначала отображается message_1, затем message_2, а затем message_3).

Я должен отобразить все сообщения одновременно. Я думаю, что для достижения этой цели я могу выполнять эти команды в subshell/ как подпроцесс / в фоновом режиме (чтобы это не влияло на другие процессы).

В ruby у нас есть системная команда, которая выполняет данную команду в подоболочке. Как я могу достичь этого типа функциональности в файле сценария bash?

1 ответ1

2

Вы можете сделать это так:

  bash -c command

но в вашем случае, возможно, достаточно отправить команду в фоновый режим:

  command &

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .