0

我正在尝试在 make 中执行一个循环来执行远程 ssh 命令,以选择进程的 pid 来杀死它。像这样:

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

但我得到:

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

我认为的问题是存储远程 ssh 命令返回的 pid(没有> $(PID).

4

1 回答 1

1

>重定向到文件,而不是变量。 $()以您可以分配给变量的方式捕获...但也是make语法,因此您需要对其进行转义。您还需要在使用它时对其进行转义,以免获得make变量(不,您不能将其存储在make变量中)。

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

(假设您的许多编辑中的一个与我复制并粘贴以修复它时相比没有太大改变......)

于 2012-04-27T08:53:11.873 回答