특정 bash 인덱스에 값을 할당하는 데 문제가 있지만 분명히 이것은 루프를 사용하여 인덱스 변수를 설정할 때만 발생합니다 while read
.
이 코드를 테스트 예시로 사용하세요.
#!/bin/bash
read -d '' TESTINPUT << 'EOF'
1,100
2,200
8,300
EOF
declare -A ARRAY
echo "$TESTINPUT"| while read _l; do
i=$(cut -d, -f1 <<< $_l)
j=$(expr $i + 0)
value=$(cut -d, -f2 <<< $_l)
ARRAY[$j]=$value
done
for i in {4..6}; do
ARRAY[$i]=$i
done
for i in {1..10}; do
echo "$i ${ARRAY[$i]}"
done
출력을 보면 while 루프의 경우 배열 변수가 설정되지 않은 반면 for 루프에서는 {4..6}
범위를 사용하는 데 문제가 없는 것 같습니다.
$ ./test_array.sh
1
2
3
4 4
5 5
6 6
7
8
9
10
또한 다음을 사용하여 인덱스 변수를 정수로 변환하려고 시도했습니다.
j=$(expr $i + 0)
하지만 그것도 작동하지 않는 것 같습니다.
어떤 아이디어가 있나요?