Ansible 相等比较中“-1”的意义是什么?

Leg*_*ude 3 ansible

我正在查看此处的Ansible 文档,并看到将输出注册为变量的示例显示了以下内容:

- name: test play
  hosts: all

  tasks:

      - shell: cat /etc/motd
        register: motd_contents

      - shell: echo "motd contains the word hi"
        when: motd_contents.stdout.find('hi') != -1
Run Code Online (Sandbox Code Playgroud)

条件语句中的相等性检查when是 -1,但我会假设这是一个布尔值,因此返回 0 或 1。我无法在文档中找到任何内容来说明为什么负情况是-1 而不是 0。这让我担心,因为这是非标准行为,我想知道在这种比较中我可以期待哪些其他类型的返回值,以及无论如何,什么是成功?一个 0?一个1?

kri*_*sFR 6

这是因为Python方法在找不到所请求的子字符串时string.find返回。-1

否则,它返回找到该字符串的索引。

你可以参考Python文档

string.find(s, sub[, start[, end]]) 返回 s 中找到子字符串 sub 的最低索引,使得 sub 完全包含在 s[start:end] 中。失败时返回-1。