Bash 指令執行一組後台指令的前台

Bash 指令執行一組後台指令的前台

我有 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)

我正在尋找一個劇本,而不是劇本: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引用命令列中的第一個和第二個參數。 eval執行這些命令並&在背景運行它們。最後,wait等待這些命令終止,或者可以使用 CTRL-C 終止它們。

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

相關內容