スクリプトを実装しているときに、次の問題に直面しています。コマンドの複数行の結果を変数に入れると、複数行の文字列の最後の (空の) 行が消えるようです。
この行は「空」ですが、含まれているキャリッジ リターンを失うことはありません (DB に保存され、「\n」文字を含むコード ブロックを人間が読める文字列に連結しているためです... 「\n」の場合、コードのインデントの一部が失われます)
私の問題を説明するコードは次のとおりです。
test="A
B
";
test2=`echo "$test"`;
echo "||$test2||";
これは戻ります
||A
B||
私が期待していた間:
||A
B
||
--> 最後の (空の) 行が消えてしまったので、人間が読めるコードにキャリッジ リターンがありません。
この問題は、複数行の文字列の最後の行が空の場合にのみ発生します...
あなたは知っていますか
- この最後の行が消えるのはなぜですか?
- 最後の空の行が複数行の文字列変数に保存されるようにするにはどうすればよいですか?
もちろん、最も簡単な解決策は使用できないことに注意してください
test2="$test";
完全なプロセスはむしろ次のとおりです。
test="^A\n\nB\n^"
test2="`echo "$test" | sed -e 's/\^//g'`";
しかし、私はできる限り問題を単純化しようとしました。