# Escaping % signs?

**URL:** <https://forum.ansible.com/t/escaping-signs/18605>\
**Category:** Ansible Project\
**Created:** [June 25, 2015, 2:11pm UTC](https://forum.ansible.com/t/escaping-signs/18605 "2015-06-25T14:11:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guy\_Matz1](https://avatars.discourse-cdn.com/v4/letter/g/b5e925/32.png) [@Guy\_Matz1](https://forum.ansible.com/u/Guy_Matz1)\
**Post date:** [June 25, 2015, 2:11pm UTC](https://forum.ansible.com/t/escaping-signs/18605/1 "2015-06-25T14:11:34Z")

</div>

Hi! I’ve written a module and am bumping up against an issue when I try to include a percent sign in one of the parameters, e.g.:

supervisor\_prog:  
name: smlp-data  
user: smlp  
command: java blah-blah-blah  
environment: PATH=‘/usr/java/jdk1.8.0\_11/bin:%(ENV\_PATH)s’

Notice the % sign in the environment param above . . . that’s causing ConfigParser to choke with:  
ConfigParser.InterpolationMissingOptionError: Bad value substitution:  
section: [program:smlp-data]  
option : environment  
key : env\_path  
rawval : ’

I would really like to escape that in my module code . . . anyone know if it’s possible to escape that when I bring in the param here?  
self.\_environment = module.params[‘environment’]

Or do I need to escape it in my call to the module . . i tried using {% raw %}…{% endraw %} - which I saw somewhere else on the mailing list - but that failed with a syntax error.

Thanks a lot,

Guy

---

<div class="post-metadata">

**Author:** ![Guy\_Matz1](https://avatars.discourse-cdn.com/v4/letter/g/b5e925/32.png) [@Guy\_Matz1](https://forum.ansible.com/u/Guy_Matz1)\
**Post date:** [June 25, 2015, 3:11pm UTC](https://forum.ansible.com/t/escaping-signs/18605/2 "2015-06-25T15:11:41Z")

</div>

Ah! Narrowing it down, the problem is actually with the ConfigParser module . . . I have a supervisor config that has the line:

environment: PATH=‘/usr/java/jdk1.8.0\_11/bin:%(ENV\_PATH)s’

and ConfigParser chokes whenever it tries to process that line:

> > > from ConfigParser import SafeConfigParser  
> > > c = SafeConfigParser()  
> > > c.read(‘/etc/supervisor.d/sidecar-data’)  
> > > [‘/etc/supervisor.d/sidecar-data’]  
> > > c.sections()  
> > > [‘program:sidecar-data’]  
> > > c.items(‘program:sidecar-data’)  
> > > Traceback (most recent call last):  
> > > File “”, line 1, in   
> > > File “/usr/lib64/python2.6/ConfigParser.py”, line 578, in items  
> > > for option in options]  
> > > File “/usr/lib64/python2.6/ConfigParser.py”, line 614, in \_interpolate  
> > > self.\_interpolate\_some(option, L, rawval, section, vars, 1)  
> > > File “/usr/lib64/python2.6/ConfigParser.py”, line 646, in \_interpolate\_some  
> > > option, section, rest, var)  
> > > ConfigParser.InterpolationMissingOptionError: Bad value substitution:  
> > > section: [program:sidecar-data]  
> > > option : environment  
> > > key : env\_path  
> > > rawval : ’

Any ideas?

Thanks again!!

---

<div class="post-metadata">

**Author:** ![Guy\_Matz1](https://avatars.discourse-cdn.com/v4/letter/g/b5e925/32.png) [@Guy\_Matz1](https://forum.ansible.com/u/Guy_Matz1)\
**Post date:** [June 25, 2015, 6:43pm UTC](https://forum.ansible.com/t/escaping-signs/18605/3 "2015-06-25T18:43:05Z")

</div>

I figured it out!! RawConfigParser “does not support the magical interpolation behavior”
