<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about template)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/template.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 27 Feb 2022 04:04:52 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Shell trick: use template file</title><link>https://bgstack15.ddns.net/blog/posts/2020/03/30/shell-trick-use-template-file/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;If you want to use a POSIX shell for building files from templates, you can
use a nifty trick shared on
&lt;a href="https://stackoverflow.com/questions/2914220/bash-templating-how-to-build-configuration-files-from-templates-with-bash/17030906#17030906"&gt;StackOverflow&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"cat &amp;lt;&amp;lt;EOF &amp;gt;outputfile&lt;/span&gt;
&lt;span class="k"&gt;$(&lt;/span&gt; cat template.in &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&lt;/span&gt;
&lt;span class="s2"&gt;EOF&lt;/span&gt;
&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And template.in can contain shell variables or even command substitution!&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ cat template.in
&lt;span class="o"&gt;[&lt;/span&gt;domain/&lt;span class="k"&gt;$(&lt;/span&gt; hostname --domain &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;

&lt;span class="nv"&gt;debug_level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;id_provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; ipa
&lt;span class="nv"&gt;ipa_server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; _srv_, &lt;span class="k"&gt;$(&lt;/span&gt; hostname --domain &lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;ipa_domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt; hostname --domain &lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;ipa_hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt; hostname --fqdn &lt;span class="k"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is a neat little trick, but should not be a regular substitute for better
templating mechanisms like the jinja2 in ansible.&lt;/p&gt;</description><category>redirection</category><category>shell</category><category>template</category><guid>https://bgstack15.ddns.net/blog/posts/2020/03/30/shell-trick-use-template-file/</guid><pubDate>Mon, 30 Mar 2020 13:06:39 GMT</pubDate></item></channel></rss>