これは、bcの使用に関するこの質問に対する私のコメントの1つから生まれました。 シェルスクリプトで。 bc 改行を大量に配置します。例:
> num=$(echo 6^6^3 | bc)
> echo $num
12041208676482351082020900568572834033367326934574532243581212211450\ 20555710636789704085475234591191603986789604949502079328192358826561\ 895781636115334656050057189523456
ただし、これらは実際には変数の改行ではないことに注意してください。少なくとも、引用符で囲まずに使用されている場合は改行されません。たとえば、割り当てにパイプを追加して浮気する場合、例:
num=$(echo 6^6^3 | bc | perl -pne 's/\\\n//g')
本当に\nがあることに気づきました bcで 出力、echo $num > tmp.txtを確認 hexdumpを使用 \nを表示します (ASCII 10)は、変数代入のスペース(ASCII 32)になっています。
または、少なくとも、引用符で囲まれていない$num >の出力で 。 それはなぜですか?
fedorquiが指摘しているように、引用符を使用する場合:echo "$num" 、再び改行を取得します。これは、echo $num > tmp.1の違いを調べることで明らかです。 およびecho "$num" > tmp.2 hexdumpを使用;前者には\が含まれています (バックスラッシュスペース)一方、後者には\\nが含まれます (バックスラッシュ改行)。
承認された回答:
echo 2つの引数の間にスペースを入れます。シェルは$numの改行を考慮します 単なる単語区切り文字(スペースと同じように)。
lines="a
b
c"
set -x
echo $lines # several arguments to echo
echo "$lines" # one argument to echo
詳細な説明については、(OP自身による)この回答を参照してください。