Команда 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"

Связанный контент