이 배쉬 가이드 는 말합니다 :
인덱스 번호가 @ 또는 *이면 배열의 모든 멤버가 참조됩니다.
내가 이것을 할 때 :
LIST=(1 2 3)
for i in "${LIST[@]}"; do
echo "example.$i "
done
제공합니다 : example.1 example.2 example.3
(원하는 결과).
그러나을 사용할 때 대신 ${LIST[*]}
얻 example.1 2 3
습니다.
왜?
편집 : printf, @ 및 *를 사용할 때 실제로 동일한 결과를 제공합니다.
답변
차이점은 미묘합니다. “$ *”는 하나의 인수를 생성하지만 “$ @”은 별도의 인수로 확장됩니다.
LIST=(1 2 3)
for i in "${LIST[@]}"; do
echo "example.$i"
done
여러 변수로 목록을 처리 (인쇄)합니다
그러나
LIST=(1 2 3)
for i in "${LIST[*]}"; do
echo "example.$i"
done
목록을 하나의 변수로 처리합니다.