囲む方法で書いてみました。食わせてはどうですか。ようにシングルクォートでくくれば変数は展開されません。解決?済みなので参考までに。実行すると、環境によっては質問欄にある様な出力になります。このスクリプトでは、最初のcatでEOFが検出された後、次のcatでも即座にEOFが検出されるので、スクリプトを修正しないと要望されていることはできないと思います。-iは置換されない場合もファイルのタイムスタンプが更新されてしまいます。exコマンドを使ってxで終了すると置換されていないファイルのタイムスタンプは更新されません。複数コマンドの結果を1行で表示したい別解です。複数の行(行数固定)を1行にまとめる場合pasteを使います。-の-をn個書きます。