获取在 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,顺便说一句,它有 2 个 pid,因为我使用 sudo 运行它:

2346 2347

因此,如果我在脚本中运行此命令,它不会杀死我想杀死的进程:

sudo kill -9 $pid

我做了一些研究,但我还找不到以干净的方式终止我创建的进程的最佳方法。你有什么建议?

示例脚本:

#!/bin/bash

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

相关内容