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