2016-08-10 104 views
1

我有2 Release.ini文件:UNIX diff命令usuage

  • 一个我从S3中/ DocRootDir位置/ CodeRootFolder/TMP位置
  • 和其他存储在下载

我想验证是否有下载(即/CodeRootFolder/tmp/Release.ini)文件的变化,如果有变化,然后通过puppet exec执行rsync命令如下。

的错误是,如果有改变,它不执行,这似乎为DIFF返回1

exec {'Actual code deployment with rsync': 
    command => "rsync ${myclass::CodeRootFolder}/tmp/* ${myclass::DocRootDir}/)", 
    #cwd => "${myclass::CodeRootFolder}", 
    onlyif => "diff --changed-group-format='%<' --unchanged-group-format='' ${myclass::CodeRootFolder}/tmp/Release.ini ${myclass::DocRootDir}/Release.ini", 
    path => ['/opt/rh/php55/root/usr/bin','/opt/rh/php55/root/usr/sbin','/usr/local/sbin','/usr/local/bin', '/sbin/' ,'/bin/', '/usr/sbin/','/usr/bin/'], 
} 

有没有很好的解决了我的问题。

在此先感谢

回答

1

的误差,如果有改变,它不执行,这似乎为 DIFF返回1

是的,这是正确的。

Invoking diff

的退出状态0意味着没有差异被发现,1表示一些 差异被发现了,和2表示的麻烦。

如果您希望在发生更改时执行该命令,则必须使用unless而不是onlyif