これは、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自身による)この回答を参照してください。