У меня есть 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, о которой я бы мечтал предоставить в качестве примера (я бы не хотел писать ее )
Попробуйте следующее:
#!/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"