我试图在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中运行它可以正常工作。
有什么问题?
答案 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;'