如何在for循环中填充数组的值

4

我需要提交一个脚本,它在一个循环中添加两个值并将每个结果放入数组中。我编写了一个脚本(但它不起作用),但我无法弄清楚如何开始。

#!/bin/sh

val1=$1
val2=$2
for i in 10
    do
        ${array[i]}='expr $val1+$val2'
        $val1++
    done    
echo ${array[@]}
2个回答

5
也许您是指这个?
val1=$1
val2=$2
for i in {1..10}; do
    array[i]=$(( val1 + val2 ))
    (( ++val1 ))
done    
echo "${array[@]}"

如果你的bash不支持{x..y},请使用以下格式:

for (( i = 1; i <= 10; ++i )); do

也是更简单的形式

    array[i]=$(( val1 + val2 ))
    (( ++val1 ))

Is

    (( array[i] = val1 + val2, ++val1 )) ## val1++ + val2 looks dirty

1
并请告诉我们在你提交后你得到了什么成绩 :-). - Ed Morton

2

konsolebox的回答是正确的,但这里有一些替代方案:

val1=$1
val2=$2
for i in {0..9}; do
    (( array[i]=val1 + val2 + i ))
done
echo "${array[@]}"


val1=$1
val2=$2
for (( i=val1 + val2; i < val1 + val2 + 10; i++ )); do
    array+=("$i")
done
echo "${array[@]}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接