1

我有兴趣在 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(两个数组的大小相同)?

谢谢

4

2 回答 2

0

由于将评论标记为答案的功能请求仍然被拒绝,因此我在此处复制上述解决方案。

您可以将 echo "$mem_set[counter]" 更改为 echo "${mem_set[counter]}" 并查看是否打印出正确的值吗?– 1_CR

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

于 2013-11-04T14:08:25.267 回答
-1

在 bash 中,您可以使用 $ 访问变量。

尝试,

counter=`expr $counter + 1`

或者

counter=$(( counter + 1 ))
于 2013-04-26T19:49:46.463 回答