bash에서 두 가지 배열 인쇄 방법의 차이점

bash에서 두 가지 배열 인쇄 방법의 차이점

내 스크립트에 배열이 선언되어 있습니다.

NAME[0]=Deepak
NAME[1]=Renuka
NAME[2]=Joe
NAME[3]=Alex
NAME[4]=Amir

echo "All Index: ${NAME[*]}"
echo "All Index: ${NAME[@]}"

위에 표시된 전체 배열을 인쇄하는 방법에는 두 가지가 있습니다. 누군가 이 방법들 사이의 차이점을 쓸 수 있나요?

답변1

  • echo "All Index: ${NAME[*]}"동일한echo "All Index: ${NAME[0]} ${NAME[1]} ${NAME[2]} ${NAME[3]} ${NAME[4]}"
  • echo "All Index: ${NAME[@]}"등호 변수 echo "All Index: ${NAME[0]}" "${NAME[1]}" "${NAME[2]}" "${NAME[3]}" "${NAME[4]}"의 첫 번째 문자 IFS는 공백입니다(기본값).

실행 결과를 볼 수 있습니다copy.sh.


IFS변수의 기본값은 입니다 $' \t\n'. ${array[*]}그리고 $*변수의 첫 번째 문자로 분할된 문자열을 출력합니다 IFS. 분할할 문자를 변경할 수도 있습니다.

NAME[0]=Deepak
NAME[1]=Renuka
NAME[2]=Joe
NAME[3]=Alex
NAME[4]=Amir

IFS=:
echo "All Index: ${NAME[*]}"
# Output: `All Index: Deepak:Renuka:Joe:Alex:Amir`

IFS=
echo "All Index: ${NAME[*]}"
# Output: `All Index: DeepakRenukaJoeAlexAmir`

IFS=$', \t\n'
echo "All Index: ${NAME[*]}"
# Output: `All Index: Deepak,Renuka,Joe,Alex,Amir`

관련 정보