Chef infra 在chef中使用ruby Mixlib::ShellOut解析问题

Chef infra 在chef中使用ruby Mixlib::ShellOut解析问题,chef-infra,chef-recipe,mixlib-shellout,Chef Infra,Chef Recipe,Mixlib Shellout,我试图扩展现有的一本烹饪书,其中我们使用Mixlib::ShellOut来收集有关Oracle安装的大量信息。大多数情况下,它只是起作用 我正在尝试为TFA运行的位置添加一个节点属性,因为这可能因版本而异。从服务器本身来看,一个简单的 ps-ef | greptfa | grepjava | awk{print$NF}正好满足了我的需要 当我把它添加到食谱中时 tfa_home = ::Mixlib::ShellOut.new("ps -ef | grep tfa | grep java | a

我试图扩展现有的一本烹饪书,其中我们使用Mixlib::ShellOut来收集有关Oracle安装的大量信息。大多数情况下,它只是起作用

我正在尝试为TFA运行的位置添加一个节点属性,因为这可能因版本而异。从服务器本身来看,一个简单的 ps-ef | greptfa | grepjava | awk{print$NF}正好满足了我的需要

当我把它添加到食谱中时

tfa_home = ::Mixlib::ShellOut.new("ps -ef | grep tfa | grep java | awk '{print $NF}'")
tfa_home.run_command
node.normal['gbucs_oracledb']['orahome']['tfa_home'] = tfa_home.stdout.strip
结果输出json似乎得到一个换行符以及字符串$NF':

"tfa_home": "/u01/app/19.0.0.0/grid/tfa/<hostname>/tfa_home\n$NF}'"
我已经尝试过几种逃过$NF的方法,但到目前为止没有成功。有明显的解决办法吗?

那怎么办

tfa_home.stdout.strip.gsub/\n\$NF}'/,, 我最终使用了tfa_home.stdout.strip.gsub/[\n\$NF}']/,。非常感谢你-这让我发疯了/[\n\$NF}']/-将在方括号中查找每个1符号的出现情况。我打赌你不想用零替换任何N,F,}和。