在子shell还是后台执行shell命令?

在子shell还是后台执行shell命令?

实际上我主要使用 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)。

我必须同时显示所有消息。为了实现这一点,我认为我可以在子shell/作为子进程/在后台执行这些命令(这​​样就不会影响其他进程)。

在 Ruby 中我们有系统命令在子 shell 中执行给定的命令。如何在 bash 脚本文件中实现此类功能?

答案1

你可以这样做:

  bash -c command

但在您的情况下,将命令发送到后台可能就足够了:

  command &

相关内容