it-swarm-ja.com

シェルコマンドをサブシェルまたはバックグラウンドで実行しますか?

実際、私は主に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

実行後、メッセージが1つずつ表示されていることがわかります(message_1が最初に表示され、次にmessage_2、次にmessage_3が表示されます)。

すべてのメッセージを同時に表示する必要があります。これを実現するために、これらのコマンドをサブシェルで/サブプロセスとして/バックグラウンドで実行できると思います(他のプロセスには影響しません)。

Rubyには、サブシェルで指定されたコマンドを実行する システムコマンド があります。bashスクリプトファイルでこのタイプの機能を実現するにはどうすればよいですか?

2
sk1712

あなたはこのようにそれを行うことができます:

  bash -c command

しかし、あなたの場合、おそらくコマンドをバックグラウンドに送信するだけで十分です。

  command &
3
MariusMatutiae