【发布时间】:2018-12-31 03:34:34
【问题描述】:
我在zsh有两个测试用例
-
A.不带引号
~$ y=(${(f)$(echo -e "a b\nc d")}); printf "<%s>\n" "${y[@]}" <a b c d> -
B.带引号
~$ y=(${(f)"$(echo -e "a b\nc d")"}); printf "<%s>\n" "${y[@]}" <a b> <c d>
但是,如果我首先将 echo 的输出分配给变量,则引号没有任何作用:
-
C.不带引号
~$ x=$(echo -e "a b\nc d"); y=(${(f)${x}}); printf "<%s>\n" "${y[@]}" <a b> <c d> -
D.带引号
~$ x=$(echo -e "a b\nc d"); y=(${(f)"${x}"}); printf "<%s>\n" "${y[@]}" <a b> <c d>
问题:
- 比较 A 和 B,导致差异的原因是什么?
- 比较 A 和 C,导致差异的原因是什么?
【问题讨论】:
标签: zsh double-quotes parameter-expansion