Unix Shell: 배열 할당이 작동하지 않습니다.

Unix Shell: 배열 할당이 작동하지 않습니다.

다음 코드로 배열에 대해 배우고 있습니다.

source_array_list[0]="a"
source_array_list[1]="a"
source_array_list[2]="a"
source_array_list[3]="a"
source_array_list[4]="a"
source_array_list[5]="a"
source_array_list[6]="a"
source_array_list[7]="a"
a=0
while [$a -le 6]
do
    echo "just before loop"
    target_array[a]=source_array_list[$a]
    echo "${source_array_list[$a]}"
    a=`expr $a + 1`
done

이제 작동하지 않고 오류가 발생합니다.[0: not found.

답변1

'['는 명령이므로 '[' 뒤에 공백이 필요합니다.

여기를 참고하세요---https://stackoverflow.com/questions/9581064/why-should-be-there-a-space-after-and-before-in-the-bash-script

또한 배열 변수 참조 주위에 ${}가 필요하므로 다음을 수행해야 합니다.

source_array_list[0]="a"
source_array_list[1]="b"
source_array_list[2]="c"
source_array_list[3]="d"
source_array_list[4]="e"
source_array_list[5]="f"
source_array_list[6]="g"
source_array_list[7]="h"
while [ $a -le 6 ]
do
  target_array[a]=${source_array_list[$a]}
  echo "${source_array_list[$a]}"
  a=`expr $a + 1`
done

다음을 수행하여 이를 단순화할 수도 있습니다.

source_array_list=('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h')
target_array=()
for element in "${source_array_list[@]}"
do
  target_array+=(${element})
  echo "${element}"
done
echo ${target_array[@]}

관련 정보