2016-08-21 9 views
3

私はbashの配列数がarrKey[],aarT[]P[]などあり、これらの配列で算術演算を行いたいと考えています。私が確認したように、配列は完全に動作していますが、配列P[]を見つける算術は間違っています。 誰も助けてくれませんか?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]})))) 
    
  • 算術拡張の外に2つの要素を追加することは間違っています。どちらか

    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作品意図ダブルインデックスを確認するために。