rake - 运行shell命令返回错误

时间:2012-08-24 10:41:20

标签: ruby rake

我试图在Rake中运行以下shell命令:

sh "d='jps -l | grep jar | cut -d ' ' -f 1'; if [ -z \"$d\" ]; then :; else kill  \"$d\"; fi;"

但是我得到了:

sh:  -f 1: not found

如果我在linux shell中运行它可以正常工作。

有什么问题?

2 个答案:

答案 0 :(得分:1)

我之前错误地解释了你的问题。这就是你想要的。

d='jps -l | grep jar | cut -d " " -f 1; if [ -z "$d" ]; then :; else kill "$d"; fi;'
system(d)

如果你想要输出命令(我猜你在这种情况下不是这样)

output = `jps -l | grep jar | cut -d " " -f 1; if [ -z "$d" ]; then :; else kill "$d"; fi;`

答案 1 :(得分:0)

您需要转义单引号并引用整个字符串:

d='jps -l | grep jar | cut -d \' \' -f 1; if [ -z "$d" ]; then :; else kill  "$d"; fi;'