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