bash 스크립트의 배열에서 빌드되고 실행되는 명령의 PID를 얻는 가장 좋은 방법은 무엇입니까?

bash 스크립트의 배열에서 빌드되고 실행되는 명령의 PID를 얻는 가장 좋은 방법은 무엇입니까?

다음과 같이 명령을 실행하고 있습니다.

# Run 
if [[ $1 == A ]]; then
    CMDD=(sudo ${path}/my_exe -O ${fileA})
elif [[ $1 == B ]]; then
    CMDD=(sudo ${path}/my_exe -O ${fileB})
fi
"${CMDD[@]}" & pid=$!

그러나 동일한 스크립트에서 pid를 에코하면 다음과 같습니다.

echo "pid: " $pid

2345

방금 실행한 프로세스의 PID를 얻지 못했습니다. 그런데 sudo를 사용하여 실행했기 때문에 PID가 2개 있습니다.

2346 2347

따라서 스크립트에서 이 명령을 실행하면 종료하려는 프로세스가 종료되지 않습니다.

sudo kill -9 $pid

몇 가지 조사를 해봤지만 내가 만든 프로세스를 깔끔한 방법으로 종료하는 가장 좋은 방법을 찾지 못했습니다. 어떤 제안이 있나요?

예시 스크립트:

#!/bin/bash

# Test
CMDD=(sudo sleep $1 )
"${CMDD[@]}" & pid=$!
echo "pid: " $pid
exit

관련 정보