
Estou examinando a documentação do Ansibleaquie veja o exemplo de registro de saída como uma variável mostra isso:
- 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
A verificação de igualdade na when
instrução condicional é para -1, mas eu teria assumido que este era um valor booleano e, portanto, retornaria 0 ou 1. Não consigo encontrar nada na documentação que indique por que o caso negativo é -1 em vez de 0. Isso me preocupa porque é um comportamento fora do padrão e gostaria de saber que outros tipos de valores de retorno posso esperar nessas comparações e, em qualquer caso, o que é um sucesso? Um 0? Um 1?
Responder1
Isso ocorre porque o string.find
método Python retorna -1
quando não consegue encontrar a substring solicitada.
Caso contrário, retorna o índice onde a string foi encontrada.
Você pode consultar oDocumento Python:
string.find(s, sub[, start[, end]])
Retorna o índice mais baixo em s onde a substring sub é encontrada de forma que sub esteja totalmente contido em s[start:end]. Retorna -1 em caso de falha.