
Я просматриваю документацию 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
Проверка равенства в when
условном операторе выполняется для -1, но я бы предположил, что это логическое значение, и, таким образом, вернул бы либо 0, либо 1. Я не могу найти в документации ничего, что указывало бы на то, почему отрицательный случай равен -1, а не 0. Это беспокоит меня, поскольку это нестандартное поведение, и я хотел бы знать, какие еще типы возвращаемых значений я могу ожидать при таких сравнениях, и в любом случае, что является успехом? 0? 1?
решение1
Это происходит потому, что метод Python string.find
возвращает значение -1
, когда не может найти запрошенную подстроку.
В противном случае возвращается индекс, по которому была найдена строка.
Вы можете обратиться кPython-документ:
string.find(s, sub[, start[, end]])
Возвращает наименьший индекс в s, где найдена подстрока sub, которая полностью содержится в s[start:end]. Возвращает -1 в случае неудачи.