我得到了 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"