BASH에서 배열을 사용하는 데 문제가 있습니다. 문제를 다음 코드로 단순화했습니다.
#! /bin/bash
A1[0]="user1 user2 user3"
A1[1]="user4 user5 user6"
for each in ${!A1[*]}
do
echo -n "$each "
echo $A1[$each]
done
출력은 다음과 같습니다.
0 user1 user2 user3[0]
1 user1 user2 user3[1]
왜 모든 줄에 [X](아마도 배열 요소를 나타냄)가 있는지 이해할 수 없습니다. 인덱스를 추가하지 않고 배열에서 인덱스 및 데이터 행을 복구하는 방법은 무엇입니까?
답변1
* 에서는 bash
다음과 같이 중괄호를 사용해야 합니다.
echo ${A1[$each]}
[$each]
배열에 첨자를 추가합니다 A1
.
1인당 치명타(1):
${name[subscript]}를 사용하여 배열의 모든 요소를 참조할 수 있습니다. 경로 이름 확장과의 충돌을 방지하려면 중괄호가 필요합니다.
계속하자:
첨자 없이 배열 변수를 참조하는 것은 첨자 0이 있는 배열을 참조하는 것과 같습니다.
이것이 바로 원본 코드가 작동하지 않는 이유입니다. 중괄호를 사용하는 경우에만 쉘이 아래 첨자를 보기 때문입니다.
그래서
echo $A1[$each]
동등하다
echo ${A1[0]}[$each]
대괄호는 특별한 의미가 없으므로 그대로 출력됩니다.
- 이 옵션이 설정된 경우
ksh
.zsh
KSH_ARRAYS