Chef 中 ruby Mixlib::ShellOut 的解析问题

Parsing issue with ruby Mixlib::ShellOut in chef

我正在尝试扩展现有的说明书,我们在其中使用 Mixlib::ShellOut 来收集有关 Oracle 安装的大量信息。大多数情况下它只是有效。

我正在尝试为 TFA 运行 添加节点属性 - 因为这可能因版本而异。从服务器本身,一个简单的 ps -ef | grep tfa | grep java | 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 的变体,但到目前为止还没有成功。有明显的解决方案吗?

String.gsub呢?

tfa_home.stdout.strip.gsub(/\n$NF}'/, '')