バックスラッシュと変数置換を含む複数行の文字列をきれいに作成しようとしています。もともと、私はバックスラッシュを必要と私はこのスニペットで必要なものを達成することができましたしませんでした:スラッシュで終わる行の複数行文字列
description=$(cat <<EOF
Creation time: $(date)
Creator: $test_group_creator
Test group: $test_group
Test execution: $test_execution_id - $test_name
Adapter: $initiator1_mac_addr
http://...
EOF
)
それは最後に少し不格好に見えると私は、コードのインデントレベルを壊す必要とすることが理想的ではないですが、それはかなり明確で、記述が後でWebページにどのように現れるかを表します。変数は、エコー出力(Iは< < -EOF構文を認識していますが、我々は、コードに4スペースのインデントを使用していて、その構文は、タブが必要です。)ここでされています
Creation time: Tue Jun 27 15:22:27 PDT 2017
Creator: langlorx
Test group: all
Test execution: 13 - go
Adapter: eth0
link...
はしかし、最近、テキストを持っていますWikiパーサにドロップされ、改行が1つのスペースに崩壊するようになりました。強制改行を途中段落に強制するには、行を二重のバックスラッシュで終了する必要があります。 bashがバックスラッシュを特別に扱っていることを知って、私はダブルバックスラッシュを二重にしなければならないことを知っていましたが、それでも正しいことはありませんでした。この使い方:
description=$(cat <<EOF
Creation time: $(date)\\\\
Creator: $test_group_creator\\\\
Test group: $test_group\\\\
Test execution: $test_execution_id - $test_name\\\\
Adapter: $initiator1_mac_addr\\\\
http://...
EOF
)
私は改行が完全に結果の変数になくなっていることがわかり、そして最後に\\\\シーケンスは、空白行を持つ変数で単一のバックスラッシュで空白行の結果が完全になくなって前に。バックスラッシュがなければ、結果として得られる文字列は上に改行、空白行、および置換された変数で正確に出力されます。行の終わりにバックスラッシュを入れると、変数をエンコードするためのbashの異なる一連のルールがトリガーされます。
Creation time: Tue Jun 27 15:20:17 PDT 2017\\Creator: user\\Test group: all\\Test execution: 12 - go\\Adapter: eth0\link...
まだ多少クリーンなコードを持ちながら猫とコマンド置換を悪用しようとするよりも、bashでこれを行うには良い方法はありますか?