【问题标题】:Puppet exec unless doesn't appear to work how I expectPuppet exec 除非看起来不像我期望的那样工作
【发布时间】:2013-06-17 05:30:35
【问题描述】:

我正在尝试从 mysql 中使用 exec 克隆一个 db,但如果它已经被克隆,我不想克隆它。

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 将不会运行。但是当我尝试它时,它是。

db 已经在 vm 中创建,如果它已经被克隆,则从查询返回的计数给我的不是“0”,而 grep 因为找不到“0”而返回a 0. 除非应该让它运行,对吧?

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

谢谢。

【问题讨论】:

    标签: puppet


    【解决方案1】:

    重要的是退出代码,而不是打印的数字。

    如果您手动运行此命令并随后执行echo $?,您将获得退出代码。

    另外,你想隐藏命令的输出:

    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",
    ...
    

    【讨论】:

    • '0'后面不应该有>吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多