2016-08-10 5 views
1

У меня есть 2 Release.ini файл:UNIX команда дифф Usuage на кукольный Exec

  • один я скачивает S3 хранения в/CodeRootFolder/TMP расположение
  • и других в/DocRootDir месте

Я хочу проверить, есть ли изменения в загруженном файле (например, /CodeRootFolder/tmp/Release.ini), а если есть изменение, выполните команду rsync через кукольный exec, как показано ниже.

Ошибка, если изменится, то не выполняется, он, кажется, как дифф возвращает 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

Ошибка, если изменится, то не выполняется, он, кажется, как дифференциалов возвращает 1.

Да, это правильно.

Invoking diff

Статус выхода 0 означает, что не было обнаружено никаких различий, 1 означает, что были обнаружены некоторые различия , и 2 означает неприятности.

Если вы хотите, чтобы команда выполняется, если есть изменения, вы должны использовать unless вместо onlyif.