ターミナルで実行したときとスクリプトファイルを実行したときで結果が違う

次のようなitems.xmlを作って、

<?xml version="1.0" encoding="UTF-8"?>
<items>
  <item>foo</item>
  <item>bar
baz</item>
  <item>qux</item>
</items>

bash

$echo "cat /items/item[2]" | xmllint --shell items.xml

したときは

/ >  -------
<item>bar
baz</item>
/ >

ってなるけど、

#!/bin/sh
echo "cat /items/item[2]" | xmllint --shell items.xml

を保存したファイルを実行したとき

/ > ------- <item>bar baz</item> / >

ってなるのなんでや!連続したスペース類がスペース1個にされてる...。困るなあ。連続スペースはどうでもいいけど、改行は改行のまま欲しいんだけどな...。

解決した

ファイルに保存するスクリプト

#!/bin/sh
str=`echo "cat /items/item[2]" | xmllint --shell items.xml`
echo "${str}"

ってしたら改行と連続スペースが保持されたままになった。わーい。
あとは、これをsedかなんかで処理して中身だけ取り出したい。