0

我刚刚了解到,引用在某些情况下会产生巨大的影响,我做了一些测试来测试它,这就是我刚刚所做的,

$ 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?

如果$xfscontains \n,AFAIKecho -e会扩展\n,但怎么能echo "$xfs"占用 2 行?

4

1 回答 1

4

任何空格通常在 shell 中被视为参数分隔符。因此,您的第一个示例有两个参数。echo打印由一个空格分隔的参数,这就是您在第二个示例中看到的行为。

但是,当您使用引号时,它们之间的任何内容都是一个参数,并且会按字面意思打印。第一个示例中的一个参数已经包含换行符,因此它使用换行符打印。

-e内置选项bash echo调节转义序列的扩展,例如\n; 但是,您没有任何转义序列。该变量包含一个文字换行符。

于 2012-02-24T07:39:51.023 回答