새 프로세스를 시작하기 전에 작업이 완료될 때까지 기다리는 함수를 만들고 싶습니다. wait
Bash에 내장된 명령 에 대해 알고 있지만 하위 프로세스에서만 작동합니다. 다른 bash 세션에서 시작하면 실패합니다. 나는 kill -0
pid를 받아들이고 주어진 프로세스가 완료될 때까지 기다리는 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
첫 번째 인수 값 대신 리터럴이 인쇄됩니다.