我刚刚了解到,引用在某些情况下会产生巨大的差异,我做了一些测试,这就是我刚刚做的事情,
$ 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
,AFAIK,echo -e
将展开\n
,但echo "$xfs"
如何占用2行?
答案 0 :(得分:4)
任何空格通常都被认为是一个参数分隔符。因此,您的第一个示例有两个参数。 echo
打印由一个空格分隔的参数,这就是您在第二个示例中看到的行为。
但是,当您使用引号时,它们之间的任何内容都是一个参数,并且字面打印。第一个示例中的一个参数已包含换行符,因此使用换行符打印。
来自-e
bash
内置的echo
选项可以调整\n
之类的转义序列的扩展。但是,您没有任何转义序列。该变量包含一个文字换行符。