
Estoy revisando la documentación de Ansible.aquíy vea el ejemplo para registrar la salida como una variable que muestra esto:
- 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
La verificación de igualdad en la when
declaración condicional es para -1, pero habría asumido que se trata de un valor booleano y, por lo tanto, devolvería un 0 o un 1. No puedo encontrar nada en la documentación que indique por qué el caso negativo es -1 en lugar de 0. Esto me preocupa porque no es un comportamiento estándar y me gustaría saber qué otros tipos de valores de retorno puedo esperar en tales comparaciones y, en cualquier caso, ¿qué es un éxito? ¿Un 0? ¿Un 1?
Respuesta1
Esto se debe a que el string.find
método Python regresa -1
cuando no puede encontrar la subcadena solicitada.
De lo contrario, devuelve el índice donde se encontró la cadena.
Puedes consultar elDocumento de Python:
string.find(s, sub[, start[, end]])
Devuelve el índice más bajo en s donde se encuentra la subcadena sub de manera que sub esté completamente contenida en s[inicio:fin]. Devuelve -1 en caso de error.