2016-08-21 61 views
3

我有bash中的數組數量,如arrKey[],aarT[],P[],我想對這些數組進行算術運算。正如我檢查,陣列工作完美,但算術找到數組0123'是錯誤的。 任何人都可以幫我解決這個問題嗎?bash中的數組運算

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

Bash不支持多維數組。你可以模擬它,就像檢查這個問題的用法:http://stackoverflow.com/questions/16487258/how-to-declare-2d-array-in-bash –

回答

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作品。