web-dev-qa-db-fra.com

Comment obtenir la sortie sous forme de variable sans crochets et u

J'ai le résultat d'une requête de ansible et j'ai essayé d'utiliser le résultat comme variable

Mon playbook est comme ça

- name: Query
  Oracle_sql:
    username: "{{ user }}"
    password: "{{ password }}"
    service_name: "{{ service_name }}"
    sql: "select smth  from table where smth like 'OK_%'"
  register: smth

Le résultat est formaté comme suit:

"msg": [
    [
        "SMTH"
    ]
]
no stdout, no stderr

Après cela, je veux utiliser ma variable:

- name: echo
  Shell: echo {{ smth.msg[0] }} > /tmp/test

et la sortie est comme ça:

[uSMTH]

Comment supprimer les crochets et le "u"? Je sais que c'est une liste, mais je ne peux pas m'en débarrasser.

J'ai essayé de convertir du format yaml ou json sans chance, ce dernier a ajouté du chariot de retour avec

| to_yaml 
| to_json
| to_Nice_yaml
| to_Nice_json

Aucun conseil?

4
Wanexa

Le résultat que vous avez obtenu est une liste de listes. Donc, une liste de lignes, avec une liste des cellules de cette ligne.

Essayez quelque chose comme ça.

- name: echo
  Shell: echo {{ smth.msg[0][0] }} > /tmp/test
4
Zoredache