Puppet exec除非看起来不像我期望的那样

时间:2013-06-13 20:55:50

标签: puppet

我正在尝试使用mysql中的exec克隆数据库,但如果已经克隆了它,我不想克隆它。

exec { "clone_from_${name}" :
  unless => "/usr/bin/mysql -u${user_to} -p${pwd_to} ${name_to} -e'select count(*) from $test_table_name;' | grep -c ' 0 '",
...

逻辑看起来有点令人困惑但基本上,我理解的方式除非是如果命令返回0,那么整个exec将不会运行。但是当我尝试它时,它就是。

已经在vm中创建了db,如果已经克隆了,则从查询返回的计数给出了除“0”以外的其他内容,以及grep,因为它没有找到“0”返回a 0.除非应该让它运行,对吧?

输出甚至给我“除非:0” 然后“执行

感谢。

1 个答案:

答案 0 :(得分:4)

这是重要的exitcode,而不是打印的数字。

如果您手动运行此命令并在之后执行echo $?,则会获得exitcode。

此外,您想要压缩命令的输出:

exec { "clone_from_${name}" :
  unless => "/usr/bin/mysql -u${user_to} -p${pwd_to} ${name_to} -e'select count(*) from $test_table_name;' | grep ' 0 ' > /dev/null 2>&1",
...