在子shell或后台执行shell命令?


2

实际上我主要使用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中,我们有一个system命令,它在子shell中执行给定的命令。如何在bash脚本文件中实现此类功能?

Answers:


3

你可以这样做:

  bash -c command

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

  command &

当我连续执行这些命令时,它们会在执行期间覆盖或替换彼此。我也编辑了我的问题,请查看这个
sk1712 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.