$ cat temp.txt
hello, world!
$ cat temp.txt | sed -n '1,4p'
hello, world!
$ ret=$(cat temp.txt | sed -n '1,4p')
$ echo "$ret"
hello, world!
$
$ret 変数に空の行がないのはなぜだろうと思っています。
助けてくれてありがとう。
bashのmanページから(強調鉱山):
Bash は、コマンドを実行し、コマンド置換を > コマンドの標準出力に置き換え、末尾の改行を削除することで展開を実行します。埋め込まれた改行は削除されませんが、単語分割中に削除される場合があります。コマンド置換 $(cat file) は、同等で高速な $(< file) に置き換えることができます。
echo "$ret"
実際の引数がどうなるかを決定する際のスキップ空白の解析echo
。よりよく理解するために、次のようなことを試してみてください。
x=$(echo ' foo ')
echo "x${x}x"
echo ${x}
echo "${x}"