2012-02-24 54 views
0

我剛剛得知,報價作出某些情況下,一個巨大的差異,我做了一些測試它,這裏就是我剛剛做,shell引用行爲

$ 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"如何取兩行?

回答

4

任何空格通常在shell中被認爲是參數分隔符。因此,你的第一個例子有兩個參數。 echo打印由一個空格分隔的參數,這就是您在第二個示例中看到的行爲。

但是,當您使用引號時,它們之間的任何內容都是一個參數,並且從字面上打印出來。你的第一個例子中的一個參數已經包含一個換行符,所以它用一個換行符打印。

bashecho-e選項可調節逃逸序列的擴增,如\n;但是,您沒有任何轉義序列。該變量包含一個文字換行符。