我刚刚了解到,在某些情况下引用会产生巨大的差异,我做了一些测试,这是我刚刚做的,
$ xfs=$(find . -type f -perm -111) #find all files with x-perm
$ echo "$xfs"
./b.out
./a.out
$ echo $xfs
./b.out ./a.out #why all in one line, but the above takes two?
如果 $xfs
包含 \n
,据我所知,echo -e
将扩展 \n
,但是如何echo "$xfs"
可以分两行吗?
最佳答案
任何空格通常在 shell 中被视为参数分隔符。因此,您的第一个示例有两个参数。 echo
打印由一个空格分隔的参数,这就是您在第二个示例中看到的行为。
但是,当您使用引号时,它们之间的任何内容都是一个参数,并且按字面意思打印。第一个示例中的 one 参数已经包含一个换行符,因此它用换行符打印。
bash
echo
内置的 -e
选项控制转义序列的扩展,如 \n
;但是,您没有任何转义序列。该变量包含文字换行符。
关于linux - shell 引用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9426991/