如何只获取 'knife search' 命令的结果

How to get only the results of 'knife search' commands

当我们运行 knife search 命令时,它会列出找到的项目数。我不想要项目的数量,而我只需要结果。如何得到它。 例如,我想为以下命令获取一些 return 代码或 nil 值。

$ knife search node "name:MyLinux AND role:java"
0 items found

您可以使用 knife exec 并使用 ruby 的 exit 方法。

示例(即使它试图理解你希望用这么少的东西完成什么 details/context):

knife exec -E "exit nodes.find('name:MyLinux AND role:java').count > 0"; echo $?

return如果未找到任何节点,则为 0;如果找到任意数量的节点,则为 1。

如果您想对节点做一些事情(比如向 run_list 添加食谱):

knife exec -E "nodes.find('name:MyLinux AND role:java') { |n| n.run_list << 'cookbook::recipe'; n.save }"

"X items found" 被写入 stderr,因此直接重定向可能更容易:

$ knife search node "name:MyLinux AND role:java" 2> /dev/null