如何在后台进程结束后继续执行脚本?

How to continue the script execution after a background process ending?

早上好

我有这个变量

NODES="lep1mk17 lep1mk18 lep1mk19"

我正在执行这个循环(我想使用并行进程)

56 for i in $NODES
57 do
58        java -jar jmxterm-1.0.1-uber.jar --url <url:port> -i $LOGDIR/$i > $LOGDIR/$i.out &
59        pid-$i=$!
60 done

在这种情况下,我将在后台运行 3 个进程。

要知道他们什么时候完成,我使用变量 pid-$i

此时我想停止我的脚本直到后台进程结束,所以我这样做:

62 for i in $NODES
63 do
64        wait $(pid-$i)
65 done

当我执行脚本时出现了一些错误:

./countMessagesTopicV4.sh: line 59: pid-lep1mk17=30491: command not found
./countMessagesTopicV4.sh: line 59: pid-lep1mk18=30493: command not found
./countMessagesTopicV4.sh: line 59: pid-lep1mk19=30495: command not found
./countMessagesTopicV4.sh: line 64: pid-lep1mk17: command not found
./countMessagesTopicV4.sh: line 64: pid-lep1mk18: command not found
./countMessagesTopicV4.sh: line 64: pid-lep1mk19: command not found
emedina@goku:~/script/kafka$ 

谁能帮我找出我的错误?

变量名必须是文字,你不能像你现在那样只使用表达式作为变量名。 (变量名也不能有-,但这是第二个问题)

bash 有关联数组变量:你想要

59: pid[$i]=$!

...

64: wait ${pid[$i]}