首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除“如果存在”,则从“不可用的剧本”中删除

删除“如果存在”,则从“不可用的剧本”中删除
EN

Stack Overflow用户
提问于 2018-09-26 20:35:47
回答 2查看 12.8K关注 0票数 5

我对Ansible很陌生,在我的一本剧本中我面临着以下问题

可供选择的剧本任务代码:

代码语言:javascript
复制
- name: Delete existing dist folder
  shell: "[ -d {{ base_path }}/dist ] && rm -rf {{ base_path }}/dist"

输出:

代码语言:javascript
复制
fatal: [masked.amazonaws.com]: FAILED! => {
"changed": true,
"cmd": "[ -d /home/centos/masked/masked/dist ] && rm -rf /home/centos/masked/masked/dist",
"delta": "0:00:00.098034",
"end": "2018-09-26 20:26:06.940872",
"invocation": {
    "module_args": {
        "_raw_params": "[ -d /home/centos/masked/masked/dist ] && rm -rf /home/centos/masked/masked/dist",
        "_uses_shell": true,
        "argv": null,
        "chdir": null,
        "creates": null,
        "executable": null,
        "removes": null,
        "stdin": null,
        "warn": true
    }
},
"msg": "non-zero return code",
"rc": 1,
"start": "2018-09-26 20:26:06.842838",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []

如果我手动运行这个命令,它就能正常工作。

代码语言:javascript
复制
[ -d /home/centos/masked/masked/dist ] && rm -rf 
/home/centos/masked/masked/dist

有谁知道会有什么问题吗?

感谢你的回应。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-27 20:38:39

使用file模块删除目录,而不是shell

代码语言:javascript
复制
- name: Delete existing dist folder
  file:
    path: "{{ base_path }}/dist"
    state: absent

根据文献资料的说法,它非常接近rm -rf

如果是absent,目录将被递归删除,文件或符号链接将被取消链接。注意,如果路径不存在,如果状态没有改变,缺席不会导致文件失败。

票数 11
EN

Stack Overflow用户

发布于 2018-09-26 20:40:46

non-zero return code

如果左手边的[ -d {{ base_path }}/dist ]值为false,则返回一个非零代码。使用三行形式代替。或者编写一个shell脚本并调用它,

代码语言:javascript
复制
if [ -d {{ base_path }}/dist ]; then
    rm -rf {{ base_path }}/dist
fi
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52525686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档