# How to use version compare test in selectattr?

**URL:** <https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732>\
**Category:** Ansible Project\
**Created:** [March 6, 2023, 2:56pm UTC](https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732 "2023-03-06T14:56:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [March 6, 2023, 2:56pm UTC](https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732/1 "2023-03-06T14:56:32Z")

</div>

Hi

I'm trying to use version compare in selectattr but get error message "Version comparison failed: '\<' not supported between instances of 'int' and 'str'  
This is the playboot I'm using

- hosts: localhost  
&nbsp;&nbsp;&nbsp;gather\_facts: no  
&nbsp;&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- vers: "5.43"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- vers: "4.34"  
&nbsp;&nbsp;&nbsp;tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: |  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ my.0.vers is version("5", "\<") }}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ my.1.vers is version("5", "\<") }}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ my | selectattr('vers', 'version', '"5", "\<"' }}

The output I get is:

ansible-playboot test.yml  
PLAY [localhost] \*\*\*\*\*

TASK [debug] \*\*\*\*\*  
OK: [localhost] =\> {}

MSG:

False  
True

TASK [debug] \*\*\*\*\*  
fatal: [localhost]: FAILED! =\> {}

MSG:

Version comparison failed: '\<' not supported between instances of 'int' and 'str'

Anyone have any idea how to do this?

---

<div class="post-metadata">

**Author:** ![utoddl](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/utoddl/32/249_2.png) [@utoddl](https://forum.ansible.com/u/utoddl)\
**Post date:** [March 6, 2023, 3:24pm UTC](https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732/2 "2023-03-06T15:24:44Z")

</div>

That last expression is too quoty (and missing a close parenthesis). Try

{{ my | selectattr(‘vers’, ‘version’, ‘5’, ‘\<’) }}

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [March 6, 2023, 3:30pm UTC](https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732/3 "2023-03-06T15:30:12Z")

</div>

The missing parenthesis is just a typo, but removing the quotes work, thanks Todd.

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [March 6, 2023, 3:39pm UTC](https://forum.ansible.com/t/how-to-use-version-compare-test-in-selectattr/37732/4 "2023-03-06T15:39:51Z")

</div>

This is the correct syntax

&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: |  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ my | selectattr('vers', 'version', '5', '\<') }}
