我如何在 bash 脚本中获得 运行 的进程 pid 并知道它何时完成

How would i get a process pid which is running in a bash script and know when its done

我需要知道另一个进程 pid,它在 bash 脚本中作为命令执行,例如 nmap 扫描等,当创建进程时,我可以显示一个条形图或一个微调框 #!/bin/sh G='3[0;32m' B='3[0m' ${G}Enter IP TAIL LIKE 0.1 OR 1.1${B}" read v ${G}ENTER Device NAME ${B}" read k nmap -A -Pn -sV 192.168.$v -oN /tmp/op //here i want a while loop for displaying a spinner

编辑代码已更新Thts the code in case tht was not visible properly ^^ 当 pid 在完成时死亡,我可以将它用作计数或标志或类似的东西来结束微调器。 我正在开发 Kali nethunter。

P.S这是我第一次遇到堆栈溢出问题,如果它太愚蠢请原谅我,或者如果我错过了什么请告诉我。

起点:

#!/bin/bash

echo "Enter IP:"
read -r ip

# `&` runs in parallel
# always quote variables
nmap "$ip" &  
# `$!` get's the background process PID
pid=$!

...

# you can see if a pid is running by checking exit status of `kill -0`
while kill -0 "$pid" 2>&1 >/dev/null; do
    printf ...
    ...
done
nmap -A -Pn -sV 192.168.0.1 -p -oN  /tmp/op   >/dev/null & pid=$!
i=1
sp="/-\|"
echo -n ' '
while kill -0 "$pid" 2>&1 >/dev/null;
do
printf "\b${sp:i++%${#sp}:1}"
done

*感谢 * kamil cuk

解决了问题