(*)와 ("$(ls)")의 차이점은 무엇입니까?

(*)와 ("$(ls)")의 차이점은 무엇입니까?

(*)이들그리고 그리고 의 차이점은 무엇인가요 ("$(ls)")?

구분 기호를 제외하면 본질적으로 동일합니까?

답변1

첫 번째는 (*)현재 디렉터리의 파일 및 디렉터리 목록을 와일드카드로 지정하고 목록을 만듭니다. 이 목록을 배열 변수에 할당할 수 있으며 각 파일 이름은 자체 항목이 됩니다.

touch 'a b' c
d=(*)
printf "> %s <\n" "${d[@]}"
> a b <
> c <

두 번째 항목인 은 현재 디렉터리를 나열하기 위해 (“$(ls)”)호출됩니다 . ls파일 및 디렉터리의 결과 목록은 단일 문자열에 저장되고 목록에 할당됩니다. 목록에는 줄 바꿈으로 구분된 이름 집합으로 구성된 단일 요소가 포함되어 있습니다.

d=("$(ls)")
printf "> %s <\n" "${d[@]}"
> a b
c <

파일 이름이 목록의 개별 요소에 올바르게 게시되고 구문 분석된 출력이 ls종종 예상치 못한 복잡성으로 가득 차 있기 때문에 첫 번째 것이 더 좋습니다.

관련 정보