Bash 기능은 새 프로세스를 시작하기 전에 프로세스가 완료될 때까지 기다립니다.

Bash 기능은 새 프로세스를 시작하기 전에 프로세스가 완료될 때까지 기다립니다.

새 프로세스를 시작하기 전에 작업이 완료될 때까지 기다리는 함수를 만들고 싶습니다. waitBash에 내장된 명령 에 대해 알고 있지만 하위 프로세스에서만 작동합니다. 다른 bash 세션에서 시작하면 실패합니다. 나는 kill -0pid를 받아들이고 주어진 프로세스가 완료될 때까지 기다리는 bash 함수를 작성했습니다 . 그러나 작동하지 않는 것 같습니다. 특정 작업의 PID sleep 60 &가 4569라고 가정해 보겠습니다. 이를 입력하면 ./pidwait.sh 4569아무것도 인쇄되지 않습니다. 내가 뭘 잘못했나요?

#!/usr/bin/env bash

function pidwait()
{
    while kill -0 "$1"; do
        echo "Process $1 still running..."
        sleep 1
    done
    echo 'Process $1 is done'
}

답변1

스크립트에서 함수를 생성하지만 사용하지는 않습니다. 스크립트를 가져온 다음 pidwait 4569./ 없이 호출하거나 스크립트 내에서 함수 호출을 추가할 수 있습니다.

#!/usr/bin/env bash

function pidwait()
{
    while kill -0 "$1"; do
        echo "Process $1 still running..."
        sleep 1
    done
    echo "Process $1 is done"
}

pidwait "$1"

또한 두 번째 echo 명령에 작은따옴표를 사용하면 $1첫 번째 인수 값 대신 리터럴이 인쇄됩니다.

관련 정보