在bash中定义和递增变量


2

我有这样的事情:

declare -r constant1=0
declare -r constant2=0

for xx in 1 2 3 4 5 6 7 8 9 10
do  
    constant1=$((constant1 + 1))
    for yy in 8 7 3 9 3 9 2 8 4 4
    do
        constant2=$((constant2 + 1))
        if [ $constant1 == $constant2 ]; then
            something here bla bla
        fi
    done
done

但这给了我一个错误,即:

line 6: constant1: readonly variable

我该如何解决这个问题?

基本上,我要在constant1 = constant2时运行“在这里做一些事情”。即[xx,yy] = [1,8],[2,7],依此类推


您为什么更改了原始问题?
heemayl

1
看看help declare和选项-r
赛勒斯

@heemayl,我进行了更改,因为我想在增加常数后添加“ do”,这不是我想要的。
iamatrain

2
-1您至少有两个语法错误,并且变量名与您给出的错误不一致。
大师

1
答案在help declare
@Cyrus

Answers:


1

如果您要修改constant1constant2,则不应将其声明为只读(这样做declare -r是)。如果要对变量对进行运算,则应考虑使用数组:

array1=(1 2 3 4 5 6 7 8 9 10)
array2=(8 7 3 9 3 9 2 8 4 4)

for i in ${!array1[@]}
do
    echo "${array1[i]}" "${array2[i]}"
done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.