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)
我正在尋找一個 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"