检查dir是否存在然后删除的语法在yml文件中不起作用

时间:2017-10-20 17:11:04

标签: ansible yaml

在looper(构建在jenkins之上),我必须以yml格式定义shell脚本来执行作业。

我是YAML的初学者。所有其他命令,如echo,wget都有效。检查文件夹是否存在然后删除dir,当我尝试执行looper作业时抛出错误。

我在yaml文件中定义了流程,在一个流程中,我给出了以下行来检查该文件夹是否存在然后将其删除

- [[ -d "$WORKSPACE/codometer-runner" ]] &&  rm -r $WORKSPACE/codometer-runner 

它给我以下错误:

预期字母或数字字符,但找到& 10:06:00在'读者',第34行,第47栏: 10:06:00 ...... WORKSPACE / codometer-runner" ]]&& rm -r $ WORKSPACE / codometer-runner 10:06:00 ^

有些人可以告诉我如何验证YAML中是否存在文件夹?

1 个答案:

答案 0 :(得分:1)

在YAML中,[启动流程序列。因此,您不能以[开头的普通标量。您有几种选择:

  • 使用块标量:

    - >-
       [[ -d "$WORKSPACE/codometer-runner" ]] &&  rm -r $WORKSPACE/codometer-runner
    

    >启动折叠的块标量,后续-告诉YAML不附加尾随换行符。

  • 单引用标量:

    - '[[ -d "$WORKSPACE/codometer-runner" ]] &&  rm -r $WORKSPACE/codometer-runner'
    
  • 双引号:

    - "[[ -d \"$WORKSPACE/codometer-runner\" ]] &&  rm -r $WORKSPACE/codometer-runner"
    

    由于标量包含双引号,因此您需要将它们转义。