bash中的数组运算

时间:2016-08-21 14:29:58

标签: arrays bash shell math

我在bash中有多个数组,例如arrKey[]aarT[]P[],我想对这些数组进行算术运算。正如我所检查的那样,数组工作正常但是,查找数组P[]的算法是错误的。 有人可以帮帮我吗?

    #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]}

1 个答案:

答案 0 :(得分:3)

您的代码行有几个问题:

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有效。