我正在尝试使用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” 然后“执行
感谢。
答案 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",
...