
콘솔에서 입력을 차단하는 명령이 2개 있으므로 Ctrl+C로 종료해야 합니다. 중단에 대한 통제력을 상실했기 때문에 백그라운드에서 실행하는 것을 좋아하지 않습니다. 그러나 그렇지 않으면 첫 번째 명령이 다음 시작 전에 종료를 기다리기 때문에 한 줄로 순차적으로 실행할 수 없습니다.
유닉스에는 이를 위한 트릭이 있어야 합니다. 내가 시도하는 것은 다음과 같습니다.
$ 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"