在ksh脚本中获取pids



我正在使用ksh创建一个脚本,其中执行过程(simple_script.sh)并迭代5次。我需要做的是每次执行该过程并将其存储在数组中时获取PID。到目前为止

while [ "$i" -lt 5 ]
do
        ./simple_script.sh
        pids[$i]=$!
        i=$((i+1))
done

正如安德烈·盖利纳斯(Andre Gelinas)所说, $!存储了最后一个背景过程的pid。

如果您可以并行执行所有命令,则可以使用此

#!/bin/ksh
i=0
while [ "$i" -lt 5 ]
do
        { ls 1>/dev/null 2>&1; } &
        pids[$i]=$!
        i=$((i+1))
        # print the index and the pids collected so far
        echo $i
        echo "${pids[*]}"
done

结果看起来像这样:

1
5534
2
5534 5535
3
5534 5535 5536
4
5534 5535 5536 5537
5
5534 5535 5536 5537 5538

如果要串行执行命令,则可以使用wait

#!/bin/ksh
i=0
while [ "$i" -lt 5 ]
do
        { ls 1>/dev/null 2>&1; } &
        pids[$i]=$!
        wait
        i=$((i+1))
        echo $i
        echo "${pids[*]}"
done

最新更新