문자열을 전달할 때 $@가 작동하지 않는 이유는 무엇입니까?

문자열을 전달할 때 $@가 작동하지 않는 이유는 무엇입니까?

예를 들어 다음 스크립트를 사용합니다.

#!/bin/bash
for a in $@
do
   echo $a
done

실행: ./script "x y" z반환:

x
y
z

아니다:

x y
z


왜 그런 겁니까?
공백이 포함된 문자열 인수를 bash에 어떻게 전달합니까?

나는 사용한다 Bash 4.3.33.

답변1

인용하다 $@:

#!/bin/bash
for a in "$@"
do
  echo "$a"
done

산출:

XY

답변2

처리할 때 $@이를 다음과 같이 단순화할 수 있습니다.

for a
do
   echo "$a"
done
"inwords...;"가 없으면 "$@"로 간주됩니다.

관련 정보