2017-03-09 70 views
1

我有一对夫妇的检查目录上今天的日期创建的文件并保存它们files任务的ansible剧本。我正在比较files|length,并根据长度是否为0打印出两条不同的消息。没有评估Ansible条件语句正确

下面是代码:

- name: Grabbing all of the files that were created today 
    shell: find /home/user/empty_directory -maxdepth 1 -daystart -ctime 0 -print 
    register: files 

    - debug: var=files.stdout 

    - debug: msg="The directory isn't empty" 
    when: files|length != 0 

    - debug: msg="The directory is empty" 
    when: files|length == 0 

继承人的输出:

TASK [debug] 
ok: [server] => { 
"changed": false, 
"files.stdout": "" 
} 

TASK [debug] 
ok: [server] => { 
"changed": false, 
"msg": "The directory isn't empty" 
} 

TASK [debug] 
skipping: [server] => {"changed": false, "skip_reason": "Conditional result was False", "skipped": true} 

有没有办法,我提出这是造成条件语句错误地评估错了吗?因为基于切断输出files的,其实是空的

我已经试过了没有|length,做我比较过的files == "" & files != "",得到了相同的结果。

任何建议,非常感谢。

+0

你所检查的'文件| length',而不是'files.stdout | length'。请注意,'文件'还包含一些其他变量,所以它绝对不是空的 – SztupY

+0

@SztupY - 感谢您的帮助!你的建议奏效了。如果你把它作为答案发布,我会投它一票 –

回答

2

要检查files|length,而不是files.stdout|length。需要注意的是files是包含一些其他的元素,以及一个字典,所以它绝对不是空