Zshでは、次の2つのコマンドの結果が異なります。
a=$(</etc/hosts) && echo $a
echo $(</etc/hosts)
1つ目はコンテンツを1行ずつ印刷し、2つ目はコンテンツ全体を1行で印刷します。
サブシェルが結果を1行ずつメインのecho
プロセスに返すためだと思いますが、確認できません。
誰かが私がそれをクリアするのを手伝ってくれる?
Zshでは、 引用符で囲まれていない変数は自動的に分割されず、glob ですが、 引用符で囲まれていないコマンド置換は分割されますIFS
の値を使用して単語に変換されます。
あなたの場合、最初のコマンドはファイル_/etc/hosts
_の内容を変数a
に保存し、_echo $a
_は分割とグロブなしでa
変数の値を出力します。 _/etc/hosts
_( 変数割り当てのRHSでは分割とグロブは実行されません )。
echo $(</etc/hosts)
は引用符で囲まれていないコマンド置換を使用し、結果は単語に分割されるため、スペースで区切られたすべての単語として_/etc/hosts
_のコンテンツを取得します。