首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >makefile循环var管道

makefile循环var管道
EN

Stack Overflow用户
提问于 2012-04-27 16:47:37
回答 1查看 352关注 0票数 0

我试图在make中执行一个循环来执行一个远程ssh命令,以操作进程的pid来杀死它。如下所示:

代码语言:javascript
复制
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

但我得到了:

代码语言:javascript
复制
/bin/sh: 3: Syntax error: ";" unexpected

我认为问题在于存储远程ssh命令返回的pid (它在没有> $(PID)的情况下工作良好)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-27 16:53:12

>重定向到文件中,而不是变量中。$()以一种可以赋值给变量的方式捕获...但也是make语法,所以您需要对其进行转义。您还需要在使用它时对其进行转义,这样您就不会获得make变量(不,您不能将其存储在make变量中)。

代码语言:javascript
复制
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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10347586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档