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を使って実行したので、2つのPIDがあります。

2346 2347

したがって、スクリプトでこのコマンドを実行すると、終了しようとしているプロセスは終了しません。

sudo kill -9 $pid

私はいくつかの調査をしましたが、私が作成したプロセスをきちんとした方法で終了する最良の方法を見つけることができませんでした。どんな提案がありますか?

スクリプト例:

#!/bin/bash

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

関連情報