У меня есть 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"