# Assign and print variable inside a with\_items loop based on condition.

**URL:** <https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359>\
**Category:** Ansible Project\
**Created:** [September 25, 2019, 7:58am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359 "2019-09-25T07:58:05Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 7:58am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/1 "2019-09-25T07:58:05Z")

</div>

`- debug:`  
`msg: "User was {{ item.split('\t')[3] }}"`  
`with_items: "{{ command_result.stdout_lines }}"`

The above give me the below output:

> “msg”: “User was FrontEnd”  
> “msg”: “User was BackEnd”

I now wish to set USER variable as user1 is returned value is FrontEnd else USER value should be user2.

I dont know how to do this but below is my failing playbook.

`- debug:`  
`vars:`  
`USER: "{{ 'user1' if item.split('\t')[3] == 'FrontEnd' else 'user2' }}"`  
`msg: "User is {{ USER }}"`

`with_items: "{{ command_result.stdout_lines }}"`

Expected output is:

> “msg”: “User is user1”  
> “msg”: “User is user2”

Can you please suggest ?

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [September 25, 2019, 8:10am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/2 "2019-09-25T08:10:14Z")

</div>

> \> - debug:  
> msg: "User was {{ item.split('\t')[3] }}"  
> with\_items: "{{ command\_result.stdout\_lines }}"|
> 
> The above give me the below output:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;"msg": "User was FrontEnd"  
> &nbsp;&nbsp;&nbsp;&nbsp;"msg": "User was BackEnd"
> 
> I now wish to set USER variable as user1 is returned value is FrontEnd else USER value should be user2.
> 
> I dont know how to do this but below is my failing playbook.
> 
> \> - debug:  
> vars:  
> USER: "{{ 'user1' if item.split('\t')[3] == 'FrontEnd' else 'user2' }}"  
> msg: "User is {{ USER }}"
> 
> ```
> with\_items: &quot;\{\{ command\_result\.stdout\_lines \}\}&quot;|
> 
> ```
> 
> Expected output is:
> 
> &nbsp;&nbsp;&nbsp;&nbsp;"msg": "User is user1"  
> &nbsp;&nbsp;&nbsp;&nbsp;"msg": "User is user2"
> 
> Can you please suggest ?

Hello,

what is the output that you actually get ... and please don't post the same question twice.

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 8:44am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/3 "2019-09-25T08:44:57Z")

</div>

@Stefan here is the output

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [September 25, 2019, 8:52am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/4 "2019-09-25T08:52:59Z")

</div>

> @Stefan here is the output

Sorry but there is no "Hello world" in the tasks you posted. Providing inaccurate information isn't helpful.

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 9:13am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/5 "2019-09-25T09:13:12Z")

</div>

@Stefan. The information provided by me is complete.

The variable if not assigned a value defaults as “Hello World”

Reference: [https://docs.ansible.com/ansible/latest/modules/debug\_module.html](https://docs.ansible.com/ansible/latest/modules/debug_module.html)

You can recreate the playbook output.

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 9:34am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/6 "2019-09-25T09:34:16Z")

</div>

Here is my entire playbook:

`

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [September 25, 2019, 9:59am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/7 "2019-09-25T09:59:55Z")

</div>

> @Stefan. The information provided by me is complete.
> 
> The variable if not assigned a value defaults as "Hello World"
> 
> Reference: [https://docs.ansible.com/ansible/latest/modules/debug\_module.html](https://docs.ansible.com/ansible/latest/modules/debug_module.html)

Ha - I never ran in that one. Alas, you need to resort to proper if else statements in order to get your  
logic to work:

&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "{% if item.split('\t')[3] == 'FrontEnd' %}user1{% else %}'user2'{% endif %}"  
&nbsp;&nbsp;&nbsp;&nbsp;with\_items: "{{ command\_result.stdout\_lines }}"

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 11:13am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/8 "2019-09-25T11:13:19Z")

</div>

There are two issues that i see.

1. I do not know how-to assign a variable USER value based on condition in the loop

Thus, instead of printing msg: “{% if item.split(‘\t’)[3] == ‘FrontEnd’ %}user1{% else %}‘user2’{% endif %}” i wish to print “{{ USER }}”

1. 

msg: “{% if item.split(‘\t’)[3] == ‘FrontEnd’ %}user1{% else %}‘user2’{% endif %}” always prints user2. I guess it is not able to match FrontEnd.

The issue could be with the if else statement or item.split(‘\t’)[3] may have some space due to which the match fails.

Below is the current output for this playbook:

`- debug:`  
`msg: "User was {{ item.split('\t')[3] }}"`  
`with_items: "{{ command_result.stdout_lines }}"`

`- debug:`  
`vars:`  
`USER: "{% if item.split('\t')[3] == 'FrontEnd' %}user1{% else %}'user2'{% endif %}"`  
`msg: "User is {{ USER }}"`  
`with_items: "{{ command_result.stdout_lines }}"`

`- debug:`

`msg: "{% if item.split('\t')[3] == 'FrontEnd' %}user1{% else %}'user2'{% endif %}" with_items: "{{ command_result.stdout_lines }}"`

Output:

---

<div class="post-metadata">

**Author:** ![jolleye](https://avatars.discourse-cdn.com/v4/letter/j/47e85d/32.png) [@jolleye](https://forum.ansible.com/u/jolleye)\
**Post date:** [September 25, 2019, 11:29am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/9 "2019-09-25T11:29:29Z")

</div>

Hello Mohtashim,  
In your debug statement, try “var” instead of “vars”.

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 11:49am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/10 "2019-09-25T11:49:33Z")

</div>

@ej does not help !

`- debug:`  
`var:`  
`USER: "{% if item.split('\t')[3] == 'FrontEnd' %}user1{% else %}'user2'{% endif %}"`  
`with_items: "{{ command_result.stdout_lines }}"`

`ERROR! 'var' is not a valid attribute for a Task`  
`The error appears to be in '/app/testinclude.yml.bkp': line 24, column 6, but may`  
`be elsewhere in the file depending on the exact syntax problem.`

`The offending line appears to be:`

`- debug:`  
`^ here`

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [September 25, 2019, 11:52am UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/11 "2019-09-25T11:52:39Z")

</div>

> @ej does not help !
> 
> \>  
> -debug:  
> var:  
> USER:"{% if item.split('\t')[3] == 'FrontEnd' %}user1{% else %}'user2'{% endif %}" with\_items:"{{  
> command\_result.stdout\_lines }}"  
> \>

It's better to split this into two tasks, IMHO debug should just output the message.

- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;USER: ....  
&nbsp;&nbsp;&nbsp;with\_items: ...

- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ USER }}"

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 12:15pm UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/12 "2019-09-25T12:15:55Z")

</div>

I did this but for some reason is is not getting user1 … it is still getting user2 as the value.

`

- set\_fact:  
USER: “user1”  
when: item.split(‘\t’)[3] == “FrontEnd”  
with\_items: “{{ command\_result.stdout\_lines }}”

- set\_fact:  
USER: “user2”  
when: item.split(‘\t’)[3] == “BackEnd”

with\_items: “{{ command\_result.stdout\_lines }}”

- debug:  
msg: “User has {{ USER }}”  
with\_items: “{{ command\_result.stdout\_lines }}”

`

Output:

---

<div class="post-metadata">

**Author:** ![racke](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/racke/32/4767_2.png) [@racke](https://forum.ansible.com/u/racke)\
**Post date:** [September 25, 2019, 12:20pm UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/13 "2019-09-25T12:20:09Z")

</div>

> I did this but for some reason is is not getting user1 ... it is still getting user2 as the value.
> 
> \>  
> -set\_fact:  
> USER: "user1"  
> when:item.split('\t')[3]=="FrontEnd"  
> with\_items:"{{ command\_result.stdout\_lines }}"
> 
> -set\_fact:  
> USER: "user2"  
> when:item.split('\t')[3]=="BackEnd"
> 
> ```
> with\_items:&quot;\{\{ command\_result\.stdout\_lines \}\}&quot;
> 
> ```
> 
> -debug:  
> msg:"User has {{ USER }}"  
> with\_items:"{{ command\_result.stdout\_lines }}"

Did you take in account that the array index starts with zero, so item.split('\t')[3] addresses the fourth column in  
your output?

Regards  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Racke

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 12:27pm UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/14 "2019-09-25T12:27:12Z")

</div>

Yes, If you look at my original post the very first post the same array item.split(‘\t’)[3] very much prints FrontEnd and BackEnd text.

---

<div class="post-metadata">

**Author:** ![jolleye](https://avatars.discourse-cdn.com/v4/letter/j/47e85d/32.png) [@jolleye](https://forum.ansible.com/u/jolleye)\
**Post date:** [September 25, 2019, 1:27pm UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/15 "2019-09-25T13:27:12Z")

</div>

Your debug statement appears to not be indebted properly.

---

<div class="post-metadata">

**Author:** ![Easy\_King](https://avatars.discourse-cdn.com/v4/letter/e/c2a13f/32.png) [@Easy\_King](https://forum.ansible.com/u/Easy_King)\
**Post date:** [September 25, 2019, 5:00pm UTC](https://forum.ansible.com/t/assign-and-print-variable-inside-a-with-items-loop-based-on-condition/31359/16 "2019-09-25T17:00:20Z")

</div>

There are no issues with the debug.

I rest this case with the experts of this forum to suggest.
