Команда 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, о которой я бы мечтал предоставить в качестве примера (я бы не хотел писать ее )

0
задан 19 July 2019 в 19:21
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"

1
ответ дан 4 December 2019 в 15:39

Теги

Похожие вопросы