次の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