コマンド拡張に含まれる改行が空白に変わるのはなぜですか?

コマンド拡張に含まれる改行が空白に変わるのはなぜですか?

コマンド拡張に関するBashマニュアルの結果

埋め込まれた改行文字は削除されませんが、単語の分離中に削除される可能性があります。

例えば

$ cat myfile
1
2
3

$ echo $(cat myfile)
1 2 3

なぜ含まれている改行文字が空白に変わるのだろうか。マニュアルにはそう書かれていませんか?

ベストアンサー1

Bash(および他の多くのシェル)から$()コマンドの出力を取得し、他のコマンドの引数として使用するために使用されます。

ここで実行される作業は次のとおりです。

まず実行してくださいcat

1
2
3

次に、対応する$()ブロックを次に置き換えます。

echo 1
2
3

シェルはこの入力を解釈し、正しいパラメータを送信する必要がありますecho。これを行うには分割する必要があります。1つまり23ここから改行文字が削除されます。

最後に、シェルは以下を送信します。

プログラム:echo

議論:1 2 3

これにより、次の内容が表示されます。

1 2 3

echo複数のパラメータがある場合は、すべてのパラメータをスペースで区切って表示するためです。

おすすめ記事