2016-08-10 153 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