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"

相关内容