在bash中循环时更改数组值

时间:2013-12-18 08:57:57

标签: arrays bash

代码

SourceFolder[0]=""
SourceFolder[1]="inbound2"
SourceFolder[2]="inbound3"

for i in "${!SourceFolder[@]}"
do    
    if [ -z "${SourceFolder[$i]}"]; then
        ${SourceFolder[$i]} = "TEST"
    fi
done

${SourceFolder[$i]} = "TEST" - 无效

它说

  

=:找不到命令

如何更改数组中当前循环索引的值?

2 个答案:

答案 0 :(得分:4)

由于第一个空格=未被解释为赋值。有full explanation on So

Btw ${SourceFolder[$i]}评估数组元素,这不是你想要做的。例如,对于第一个,它是空字符串。

替换为SourceFolder[$i]=

答案 1 :(得分:0)

您必须更改数组中的索引号:

ARRAYNAME[indexnumber]=value

好的,您的数组是:

array=(one two three)

您可以在脚本中添加count进行初始化,并为数组indexnumber更改元素,例如:

#!/bin/bash

count=0
array=(one two three)

for i in ${array[@]}
do
  echo "$i" 
  array[$count]="$i-indexnumber-is-$count"
  count=$((count + 1))
  echo $count
done

echo ${array[*]}

结果:

bash test-arr.sh 
one
1
two
2
three
3
one-indexnumber-is-0 two-indexnumber-is-1 three-indexnumber-is-2