2012-04-27 1 views
0

私はそれを殺すためにプロセスのPIDをoptainするリモートのsshコマンドを実行するためにmakeにループをしようとしています。このよう :メークファイルのループのvarパイプ

target: 
    for node in 23 ; do \ 
    echo $$node ; \ 
    ssh [email protected]$$node "~/jdk1.6.0_31/bin/jps | grep CassandraDaemon | awk '{print \$$1}'" > $(PID); \ 
    ssh [email protected]$$node "kill -9 $(PID); \ 
    done 

しかし、私は得る:

/bin/sh: 3: Syntax error: ";" unexpected 

私が思う問題はリモートのsshコマンドが返すことのpidを格納することである(それは> $(PID)せずにうまく中華鍋)

+0

最後の行 – je4d

答えて

1

>変数にではなくファイルにリダイレクトされます。 $()は変数に割り当てることができる方法でキャプチャしますが、makeという構文もあり、エスケープする必要があります。代わりにmake変数を取得しないように、使用するときにエスケープする必要があります(いいえ、make変数に格納することはできません)。あなたは第二の比類のないダブルクォートを持っているように見える

for node in 23 ; do \ 
    echo $$node ; \ 
    PID=$$(ssh [email protected]$$node "~/jdk1.6.0_31/bin/jps | grep CassandraDaemon | awk '{print \$$1}'"); \ 
    ssh [email protected]$$node "kill -9 $$PID; \ 
done 

(あなたの多くの、多くの編集の仮定1は、私がコピーされ、それを修正することを貼り付けたときから、あまりにも多くのものを変更していない...)

+0

ありがとうgeekosaur !!!! 正しい最後の行は です。ssh user @ pc $$ node "kill -9 $$ PID"; \ 最後の " –

関連する問題