2012-10-23 2 views
1

bash 스크립트를 통해 간단한 디렉토리 맹 글링을 시도하고 있지만 OSX 10.6과 같은 이상한 동작이 발생합니다.Bash - 변수에 'find'결과를 할당 할 때 이상한 동작이 발생했습니다.

find . -iname "*" -type d 

Results: 
dir1 
dir2 
dir3 

을 그러나, 나는 할당 할 때 : I 대상 디렉토리에서 다음 명령을 실행하면

, 나는 find 명령의 예상 결과 즉, 단지 디렉토리/폴더를 검색 할 때 얻을 결과를 변수에 출력하고 인쇄하면 매우 다른 행동을합니다.

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

Results: 
dir1 
dir2 
dir3 
dir3 
dir3 
dir3 

마지막 입력이 여러 번 반복되는 것이 합리적입니까? 출력을 sort -u으로 파이핑하여이 문제를 해결할 수 있었지만이 문제의 근본 원인을 알고 싶었습니다.

감사합니다.

+1

'find'의 출력은 무엇입니까? ? –

+1

'$ (...) '를 큰 따옴표로 묶어 볼 수도 있습니까? 그래도 도움이 될지 모르겠다. ... –

+0

@JanitoVaqueiroFerreiraFilho 시도해 보니, 행운이 없다. – DevNull

답변

-1

나는 find 명령의 출력 오류와 관련이 있다고 생각합니다. 지금은 보여주는 것 다음 하위 디렉토리가 표시되지 않는 이유

Results: 
dir1 
dir2 
dir3 
dir3 
dir3 
dir3 

나는 확실하지 않다하지만 난 사용하지 않는 것을 보장했다 :

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

이전에 보여되었을 때

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

사용

echo "$myvar" 

출력을 확인합니다. 괄호가 없으면 *이 평가 될 수 있습니다.

관련 문제