在for循环中从bash脚本运行多个程序

时间:2012-02-20 10:10:38

标签: bash

我尝试使用bash脚本运行节点服务器的多个实例。我参数化节点,以便我可以在每个周期更改端口,但似乎我无法正常运行它。这就是我写的(并没有开始任何事情)。它看起来很丑陋,我对打字脚本非常陌生。

#!/bin/bash

#iterate input times and start server
COUNT=$1
TIMEOUT=$2
PORT=3000

while [ $COUNT -gt 0 ]; do
        A="node server.js "
        B=PORT
        C=" "
        D=TIMEOUT
        CMD=$A$B$C$D
        $CMD
        let PORT=PORT+10
        let COUNT=COUNT-1
done

TIMEOUT只是我传递给服务器实例的另一个变量。

任何人都可以指出我做错了什么吗?非常感谢,如果脚本看起来很难看,那就很抱歉。

2 个答案:

答案 0 :(得分:3)

TIMEOUT=$2
for((count=$1,port=3000;count>0;--count,port+=10)); do
    node server.js $port $TIMEOUT &
done

你有太多遗失$ - 迹象。

答案 1 :(得分:1)

你基本上想要启动一个新线程,否则执行将等待你的命令退出的进程。要做到这一点,只需附加'& '到命令,即

...
$CMD &
...