如何在后台进程结束后继续执行脚本?
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]}
早上好
我有这个变量
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]}