Bash

用於執行前台後台命令集的 Bash 命令

  • July 19, 2019

我有 2 個命令執行阻止控制台中的輸入,因此它們必須以 CTRL+C 結束。我不喜歡在後台執行它們,因為我失去了對中斷的控制。但是否則我不能在單行中順序執行它們,因為第一個命令在下一次啟動之前等待終止。

在unix中必須有一個技巧。我嘗試的是這樣的:

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

我正在尋找一個 oneliner,而不是一個腳本:fg-wrapper 是我夢寐以求的內置 posix 命令作為範例提供(我不想編寫腳本)

試試這個:

#!/usr/bin/env bash

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

解釋:

$1$2參考命令行中的第一個和第二個參數。 eval執行這些命令&並在後台執行它們。最後,wait等待這些命令終止,或者可以用 CTRL-C 終止它們。

試試這個腳本 ./script "ping google.com > /dev/null" "ping 127.0.0.1 > /dev/null"

引用自:https://serverfault.com/questions/975799