 <p>I can't reproduce your problem here with Bash 4.2.29.</p> <p>However, did you know that <code>read</code> will join lines with <code>\</code> newline continuations by default?</p> <pre><code>read rule &lt; &lt;(cpp -P -w -undef -nostdinc -C -M file.cc) echo "${rule##*:}" </code></pre> <p>Or, in a more <code>sh</code>-compatible way (I think),</p> <pre><code>cpp -P -w -undef -nostdinc -C -M file.cc | { read rule echo "${rule##*:}" } </code></pre>