%EB%8A%94%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EC%A0%9C%EA%B3%B5%ED%95%98%EA%B3%A0%20%24()%EB%8A%94%20%ED%95%98%EB%82%98%EC%9D%98%20%EC%9D%B8%EC%88%98%EB%A7%8C%20%EC%A0%9C%EA%B3%B5%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
제가 잘못된 단어를 사용했을 수도 있으니 수정 부탁드립니다. 내가 가지고 있다고 가정 해 봅시다 :
lst=(`ls $1`)
echo $lst #this gives the first element of the list
하지만 내가 이것을 시도하면 :
lst=$(ls $1)
echo $lst #this gives me all the files under argument directory
답변1
첫째, $1
(첫 번째 매개변수)가 왜 여기에 있나요? 둘째, 변수의 내용이 아닌 echo lst
로만 작성하세요 . lst
당신은 그것을 원해야합니다 echo $lst
.
괄호로 묶은 할당은 다음 을 사용할 때 bash(1)
첫 번째 요소로 평가되는 인덱스 없이 배열을 생성합니다 .
lst=(1 2 3)
echo $lst # prints 1
echo ${lst[0]} # prints 1
echo ${lst[1]} # prints 2
echo ${lst[*]} # prints 1 2 3
답변2
첫 번째 예
lst=(`ls $1`)
동일할 것이다
lst=( $(ls $1 ) )
그리고 둘 다 bash에서 작동하는 것 같습니다.
답변3
배쉬에서.
첫 번째 예제 lst=(
ls $1은 )
var lst에 값 배열을 생성합니다.
이 코드는 다음과 같이 표시됩니다.
lst=(`ls .`); printf '%s\n' "${lst[@]}"
두 번째 예제는 lst=$(ls $1)
실행되지만 ls $1
출력(하나의 긴 문자열로 연결됨)만 var 에 할당합니다 lst
.
아마도 당신이 비교하고 싶은 것은 다음과 같습니다:
lst=( `ls $1`)
lst=($(ls $1))
그리고 실제로 `...`
는 똑같습니다 $(...)
.
두 명령 모두 값 배열을 생성합니다.lst