在For循环Bash中更新数组值

时间:2013-04-26 19:46:19

标签: arrays bash pointers for-loop counter

我有兴趣更新for循环中的数组元素值,但我的更新定义错误,因为输出包含[counter]。 这是我的代码:

declare -a mem_set=(0 0 0 0 0 0 0)
counter=0
for i in "${domain_path[@]}"
do
    cd $i
    echo "$(pwd)"
    for mLine in $(grep 'default.default.minmaxmemory.main' start_params.properties)
    do
            echo "$mLine"
    done
    l_bound="Xmx"
    r_bound="m"
    mem_set[counter]=$(echo "$mLine" | sed -e "s/.*${l_bound}//;s/${r_bound}.*//")
    echo "$mem_set[counter]"
    let counter=counter+1
done

循环和$(echo "$mLine" | sed -e "s/.*${l_bound}//;s/${r_bound}.*//")运行正常,但我无法获得正确的输出。缺少什么是我的更新声明?它的输出是2048[counter]。另外,除了counter之外,还可以使用i作为i数组(两个数组具有相同的大小),而不是使用另一个计数器mem_set?< / p>

谢谢

2 个答案:

答案 0 :(得分:0)

由于对mark a comment as an answer的功能请求仍然被拒绝,我在此处复制上述解决方案。

你可以改变echo“$ mem_set [counter]”来回显“$ {mem_set [counter]}”并查看是否打印出正确的值? - 1_CR

谢谢你的建议。改变格式是有效的,所以现在我得到正确的输出。 - Simply_Me

答案 1 :(得分:-1)

在bash中,您将使用$。

访问变量

尝试,

counter=`expr $counter + 1`

counter=$(( counter + 1 ))