%EC%99%80%20(%22%24(ls)%22)%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
(*)
이들그리고 그리고 의 차이점은 무엇인가요 ("$(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
종종 예상치 못한 복잡성으로 가득 차 있기 때문에 첫 번째 것이 더 좋습니다.