2012-10-23 105 views
1

我試圖通過bash腳本做一些簡單的目錄修改,但我遇到了一些奇怪的行爲(OSX 10.6)。Bash - 將變量`find`分配給變量時的奇怪行爲

當我發出目標目錄中的以下命令,我得到試圖從find命令的預期結果時,搜索剛剛目錄/文件夾,即:

find . -iname "*" -type d 

Results: 
dir1 
dir2 
dir3 

然而,當我嘗試給結果給一個變量,並打印出來,我得到了一些非常不同的行爲:

myvar=$(find . -iname "*" -type d) 
echo $myvar 

Results: 
dir1 
dir2 
dir3 
dir3 
dir3 
dir3 

是否有意義,最終的條目被重複多次?我現在可以通過將輸出管道輸出到sort -u來彌補,但我想知道這個問題的根源。

謝謝。

+1

是什麼的'找到.'輸出? –

+1

你可以嘗試將'$(...)'放在雙引號中嗎?不知道它是否會幫助,雖然... –

+0

@JanitoVaqueiroFerreiraFilho試過,沒有運氣。 – DevNull

回答

-1

我認爲這與find命令中的輸出錯誤有關。現在,它的顯示如下:

myvar=$(find . -iname "*" -type d) 
echo $myvar 
Results: 
dir1 
dir2 
dir3 
dir3/subdir1 
dir3/subdir2 
dir3/subdir3 

當先前顯示:

Results: 
dir1 
dir2 
dir3 
dir3 
dir3 
dir3 

我不知道爲什麼沒有被顯示的子目錄,但我保證,我並不需要使用sort -u現在通過指定深度,以及:

myvar=$(find . -iname "*" -type d -maxdepth 1) 
Results: 
dir1 
dir2 
dir3 
3

使用

echo "$myvar" 

驗證輸出。沒有括號,*可能會被評估。