linux – 仅当目录存在时才创建文件?

如果目录存在,我正在尝试编写创建文件的模块,否则它不应该做任何事情.
class puppetmodule{
  exec { 'chk_dir_exists':
    command => 'test -d /usr/dir1',path    =>  ["/usr/bin","/usr/sbin","/bin"],} ->

  file {'usr/dir1/test.txt':
    ensure => 'file',owner  => 'root',group  => 'root',mode   => '0750',}
}

下面是它抛出的错误.请就此向我提出建议.

Error: test -d /usr/dir1 returned 1 instead of one of [0]

解决方法

这样的东西会起作用:
$dir = "/usr/dir1"

  exec { "chk_${dir}_exist":
    command => "true",onlyif  => "test -d ${dir}"
  }

  file {"${dir}/test.txt":
    ensure => file,require => Exec["chk_${dir}_exist"],}

说明:

onlyif => “test -d ${dir}”

表示仅在test -d的输出为true时才创建Exec资源.

require =>执行[ “CHK _ ${DIR} _exist”]

表示仅在Exec资源存在时才创建文件资源.

如果该目录不存在,则puppet运行将生成错误,指示它无法创建File资源,因为Exec资源不存在.这是预期的,可以安全地忽略,因为其余的木偶目录仍然被应用.

如果该目录存在,则创建并应用文件资源.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...