bash中有很多数组,比如arrKey[]aarT[]P[],我想对这些数组进行算术运算。正如我所检查的,数组工作得很好,但是,找到arrayP[]的算法是错误的。
有人能帮我做这个吗?

    #The format is C[0] = (A[0,0]*B[0]) + (A[0,1]*B[1])

这是我到目前为止试过的代码。
    P[0]= $(({arrKey[0,0]} * {arrT[0]} ))+ $(({arrKey[0,1]} * {arrT[1]})) ))
    echo ${P[0]}

最佳答案

您的代码行有几个问题:

P[0]= $(({arrKey[0,0]} * {arrT[0]} ))+ $(({arrKey[0,1]} * {arrT[1]})) ))

=之后还有一个额外的空格,请将其删除。
P[0]=$(({arrKey[0,0]} * {arrT[0]} ))+ $(({arrKey[0,1]} * {arrT[1]})) ))

在算术展开式之外添加两个元素是不正确的。
删除其他括号:
P[0]=$(({arrKey[0,0]} * {arrT[0]} + {arrKey[0,1]} * {arrT[1]}))

使用$或从{…}中的变量中删除$(( … ))
P[0]=$(( arrKey[0,0] * arrT[0] + arrKey[0,1] * arrT[1] ))

即使不是严格要求,也可以引用您的扩展:
P[0]="$(( arrKey[0,0] * arrT[0] + arrKey[0,1] * arrT[1] ))"

另外,请确保arrKey已声明为关联数组:
declare -A arrKey

以确保预期的双索引0,0有效。

10-04 11:17