早上好
我有这个变量
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$
有人可以帮助我找到我的错误吗?
答案 0 :(得分:0)
变量名必须是文字,不能像现在那样仅将表达式用作变量名。 (而且变量名中不能包含-
,但这是第二个问题)
bash具有关联的数组变量:您想要
59: pid[$i]=$!
...
64: wait ${pid[$i]}