Mohamed Nuzhy
Mohamed Nuzhy

Reputation: 105

Array arithmetic in bash

I have number of arrays in bash, such as arrKey[], aarT[],P[] and I want to do an arithmetic operation with these arrays. As I checked, arrays are working perfectly but, the arithmetic to find array P[] is wrong. Can anyone help me with this, please?

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

this is the code that I tried so far.

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

Upvotes: 3

Views: 741

Answers (1)

user6717040
user6717040

Reputation:

There are several issues with your line of code:

P[0]= $(({arrKey[0,0]} * {arrT[0]} ))+ $(({arrKey[0,1]} * {arrT[1]})) ))
  • There is an additional space after the =, erase it.

    P[0]=$(({arrKey[0,0]} * {arrT[0]} ))+ $(({arrKey[0,1]} * {arrT[1]})) ))
    
  • It is incorrect to add two elements outside of an Arithmetic expansion.
    Remove the additional parentheses:

    P[0]=$(({arrKey[0,0]} * {arrT[0]} + {arrKey[0,1]} * {arrT[1]}))
    
  • either use a $ or remove the {…} from variables inside a $(( … )):

    P[0]=$(( arrKey[0,0] * arrT[0] + arrKey[0,1] * arrT[1] ))
    
  • Even if not strictly required, it is a good idea to quote your expansions:

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

Also, make sure that the arrKey has been declared as an associative array:

declare -A arrKey

To make sure the intended double index 0,0 works.

Upvotes: 3

Related Questions