2012-02-20 24 views
0

私は、bashスクリプトを使用してノードサーバーの複数のインスタンスを実行しようとしています。私は各サイクルでポートを変更できるようにノードをパラメータ化しましたが、正しく実行できないようです。これは私が書いたものです(何も始まらない)。それはかなり醜いように見えますが、私はスクリプトをbashするのがとても新しいです。forループ内の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は、サーバーインスタンスに渡す別の変数です。

誰かが間違っていることを指摘できますか?ありがとう、スクリプトが醜い場合はごめんなさい。

答えて

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

+0

大変ありがとうございます!それは正常に動作し、私の醜いスクリプトよりもはるかにきれいに見えます。再度、感謝します! – Masiar

+0

歓迎します;-) –

1

基本的には新しいスレッドを開始します。そうしないと、実行はコマンドの実行を開始するプロセスが終了するまで待機します。これを行うには、単純に、コマンドに '&' を追加、すなわちあなたが道$ -signsをあまりにも多く失った

... 
$CMD & 
... 
関連する問題