2016-08-21 1 views
3

Ich habe die Anzahl der Arrays in Bash, wie arrKey[], aarT[], P[] und ich möchte eine arithmetische Operation mit diesen Arrays zu tun. Wie ich überprüft habe, funktionieren Arrays perfekt, aber die arithmetische Suche nach Array P[] ist falsch. Kann mir bitte jemand helfen?Array Arithmetik in Bash

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

Dies ist der Code, den ich bisher versucht habe.

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

Bash unterstützt keine mehrdimensionalen Arrays. Sie können es simulieren, überprüfen Sie diese Frage für die Verwendung: http://stackoverflow.com/questions/16487258/how-to-declare-2d-array-in-bash –

Antwort

3

gibt es mehrere Probleme mit dem Codezeile:

P[0]= $(({arrKey[0,0]} * {arrT[0]}))+ $(({arrKey[0,1]} * {arrT[1]})))) 
  • Es gibt einen zusätzlichen Raum nach dem =, es zu löschen.

    P[0]=$(({arrKey[0,0]} * {arrT[0]}))+ $(({arrKey[0,1]} * {arrT[1]})))) 
    
  • Es ist falsch, zwei Elemente außerhalb einer arithmetischen Erweiterung hinzuzufügen. Entfernen
    die zusätzlichen Klammern:

    P[0]=$(({arrKey[0,0]} * {arrT[0]} + {arrKey[0,1]} * {arrT[1]})) 
    
  • entweder ein $ verwenden oder die {…} von Variablen innerhalb eines entfernen $((…)):

    P[0]=$((arrKey[0,0] * arrT[0] + arrKey[0,1] * arrT[1])) 
    
  • Auch wenn nicht unbedingt erforderlich, es ist eine gute Idee zu zitieren Ihre Erweiterungen:

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

Stellen Sie außerdem sicher, dass die arrKey als assoziatives Array deklariert wurde:

declare -A arrKey 

an dem vorgesehenen Doppel Index 0,0 Arbeiten sicherstellen.