zsh関数の出力から先行スペースが削除されます。

zsh関数の出力から先行スペースが削除されます。

次の2つのコマンドとその結果を考えてみましょう。

14:57 : echo $(echo "  ABC")
ABC

14:57 : echo "  ABC"
  ABC

zshバージョン:zsh 5.0.5 (x86_64-apple-darwin14.0)

もともと先行スペースが削除されるのはなぜですか?ドキュメントに説明や理由が見つかりません。

ベストアンサー1

明らかにするコマンドの置き換えIFSコマンド置換を二重引用符で囲まない限り、from文字を区切り文字として単語に区切ります。したがって、" ABC"1つの要素を含む単語のリストに分割されます"ABC"echo "$(echo " ABC")"コマンド置換結果を文字列として使用するために使用されます。

通常のBourne / POSIXスタイルのシェルとは異なり、zshはコマンド置換によって生成された単語をファイルリストではなくglobパターン:echo $(echo "*")printsとして扱いません(このオプションが設定されていない場合)。また、一般的なBourne / POSIXスタイルのシェルとは異なり、パーティション化は、引用符で囲まれていない変数置換によって生成されたスペースが削除されない限り、引用符で囲まれていない変数置換ではなく、引用符付きコマンド置換でのみ行われます。*glob_subst

おすすめ記事