Java 进程和进程生成器
我正在尝试运行一个greps空闲内存的进程,但process builder无法解析awk部分Java 进程和进程生成器,java,bash,scala,awk,Java,Bash,Scala,Awk,我正在尝试运行一个greps空闲内存的进程,但process builder无法解析awk部分 scala> import scala.sys.process._ scala> "grep MemFree /proc/meminfo" #| "awk '{print $2}'" ! awk: cmd. line:1: '{print awk: cmd. line:1: ^ invalid char ''' in expression res16: Int = 1 与此相同的结果
scala> import scala.sys.process._
scala> "grep MemFree /proc/meminfo" #| "awk '{print $2}'" !
awk: cmd. line:1: '{print
awk: cmd. line:1: ^ invalid char ''' in expression
res16: Int = 1
与此相同的结果
scala> Seq("grep", "MemFree /proc/meminfo") #| Seq("awk", "'", "{print $2}", "'") !
awk: cmd. line:1: '
awk: cmd. line:1: ^ invalid char ''' in expression
逃跑也不管用
scala> Seq("grep", "MemFree /proc/meminfo") #| Seq("awk", "\"'{print $2}'\"") !
res21: Int = 0
如何让awk{print$2}正常工作?是否有方法检查process builder试图执行的内容?撇号仅由bash用于了解参数边界的位置。在Scala中,当您使用
Seq
时,这些边界是给定的,撇号没有任何意义,它们被传递给awk
,后者随后会投诉
导入scala.sys.process_
(Seq(“grep”,“MemFree”,“/proc/meminfo”)| Seq(“awk”,“print$2}”)。!
还要注意grep的参数必须分开
顺便说一下,如果您想将值输入Scala,可以使用
代码>:
(Seq(“grep”、“MemFree”、“/proc/meminfo”)| Seq(“awk”、“{print$2}”)。!!。修剪
Bash或类似shell中使用了一对“
,表示其中的空格不是单独参数的分隔符。也就是说,{print$2}
意味着awk
命令的第一个参数应该是字符串{print$2}
所以您正在寻找Seq(“awk”,“print$2}”)