【问题标题】:Do nothing if the file doesn't exist - Chef Template如果文件不存在,则不执行任何操作 - Chef 模板
【发布时间】:2016-07-20 08:20:03
【问题描述】:

我创建了一本食谱,用于将一些文件夹复制到其他文件夹。在模板中,我写了如下的linux命令:

cp -r [some path] [some path]
cp -r [some path] [some path]
cp -r [some path] [some path]
...

但最后一个命令复制具有特定扩展名 .html 的文件。所以我写了这样的命令:

cp [some path]/*.html [some path]

一切正常,但我必须在最后一个命令中写一些 if 语句,因为在某些情况下,当此目录中没有 html 文件时。 怎么写在我的模板里?

【问题讨论】:

    标签: ruby templates chef-infra exists cookbook


    【解决方案1】:

    您可以使用if 语句。

    包裹在<% %><% -%> 中的代码是一个被评估的语句。

    所以你可以这样写:

    <% if File.exist?('filename') -%>
      # do something
    <% end -%>
    

    【讨论】:

    • @pulpet112 你能指定你模板的扩展名吗?
    • 当然。这是 .erb 文件
    • @pulpet112 是的,您可以在文件&lt;% %&gt; 中使用此结构
    • 不要在 Chef 模板中执行此操作!这是一个模板
    • @farhatmihalko 太棒了!最后一个问题:我到这个目录的路径是写在属性中的。例如,我在属性文件中有这一行: default['temp']['path'] = "/folder1/folder2" 在那里,我正在寻找 html 文件。那么如何在您的示例中替换“文件名”?可以是这样吗?? cp /*.html node[一些路径]
    猜你喜欢
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2021-06-28
    • 1970-01-01
    相关资源
    最近更新 更多