如何只获得'刀搜索'命令的结果

时间:2015-06-23 08:37:11

标签: chef knife

当我们运行刀搜索命令时,它列出了找到的项目数。我不想要项目的数量,而只需要结果。怎么弄它。 举个例子,我想为下面的命令获得一些返回码或nil值。

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

2 个答案:

答案 0 :(得分:2)

发现" X项目"写入stderr,因此重定向它可能更容易:

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

答案 1 :(得分:0)

您可以使用knife exec并使用红宝石的exit方法。

示例(即使它试图通过如此少的细节/上下文来完成您想要完成的任务):

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

如果没有找到,则返回0;如果找到任意数量的节点,则返回1。

如果您希望对节点执行某些操作(例如向run_list添加配方):

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