我试图在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)的情况下工作良好)
发布于 2012-04-27 16:53:12
>重定向到文件中,而不是变量中。$()以一种可以赋值给变量的方式捕获...但也是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(假设您的许多编辑中的一个与我复制和粘贴它以修复它时相比并没有太多变化……)
https://stackoverflow.com/questions/10347586
复制相似问题