Bash

Unix Shell:數組分配不起作用

  • September 21, 2020

我正在通過以下程式碼學習數組

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.

‘[’ 之後需要一個空格,因為 ‘[’ 是一個命令。

請參閱此處-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[@]}

引用自:https://unix.stackexchange.com/questions/194017