フォアグラウンドでバックグラウンドコマンドを実行する Bash コマンド

フォアグラウンドでバックグラウンドコマンドを実行する Bash コマンド

コンソールの入力をブロックする 2 つのコマンドが実行されたため、CTRL+C で終了する必要があります。割り込み制御が失われるため、バックグラウンドで実行するのは好ましくありません。ただし、最初のコマンドが次のコマンドの開始前に終了を待機するため、1 行で連続して実行することはできません。

Unix ではこれに対するトリックがあるはずです。私が試しているのは次のようなものです:

$ fg-wrapper infinite-cmd1 & infinite-cmd2
  Executing cmd1 in bg
  Executing cmd2 in bg
(Waiting for CTRL+C to end both)

私はスクリプトではなくワンライナーを探しています: fg-wrapper は、私が夢見ている組み込みの POSIX コマンドであり、例として提供されます (スクリプトを作成する必要がないようにしたい)

答え1

これを試して:

#!/usr/bin/env bash

echo "Executing $1 in bg"
eval $1 &
echo "Executing $2 in bg"
eval $2 &
wait

説明:

$1$2コマンドラインの最初と 2 番目の引数を参照します。 これらevalのコマンドは&バックグラウンドで実行されます。最後に、waitこれらのコマンドが終了するのを待ちます。または、CTRL-C で終了することもできます。

このスクリプトを試してみてください ./script "ping google.com > /dev/null" "ping 127.0.0.1 > /dev/null"

関連情報