2016-11-07 9 views
-1

Ich versuche, ein Bash-Skript auszuführen, aber aus irgendeinem Grund gibt mir dieser Teil der Ausgabe einen Fehler.Linux-Syntaxfehler

TIER1PCT=$[ $TIER1COUNT * 100/$TOTAL ] TIER2PCT=$[ $TIER2COUNT * 100/$TOTAL ] TIER3PCT=$[ $TIER3COUNT * 100/$TOTAL ]

Ich erhalte diese Fehlermeldung: :syntax error: operand expected (error token is "/ ")

+4

Ich nehme an, Variable '$ TOTAL' enthält keinen Wert. – Cyrus

+0

Der Wert ist 'TOTAL = $ (cat $ NEWUSERSFILE | wc -1)' –

+0

Dies könnte helfen: [Wie Debuggen eines Bash-Skripts?] (Http://unix.stackexchange.com/q/155551/74329) – Cyrus

Antwort

1

versuchen dies;

TOTAL=$(cat $NEWUSERSFILE | wc -l) 

if [ -n "$TOTAL" ]; then 
TIER1PCT=$[ $TIER1COUNT * 100/$TOTAL ] 
TIER2PCT=$[ $TIER2COUNT * 100/$TOTAL ] 
TIER3PCT=$[ $TIER3COUNT * 100/$TOTAL ] 

else 
echo $TOTAL is null 
fi 
+0

Die Ausgabe, die ich erhielt, war 'wc: ungültige Option - '1' Try 'wc --help' für weitere Informationen. ist null "Tier 1", "22", "%" "Tier 2", "15", "%" "Tier 3", "13", "%" –

+1

wc -1 option ist nicht vorhanden, nicht wc -1, versuche wc -l, um die Anzahl zu zählen, ich habe ans aktualisiert. vielleicht könnte dir das helfen –

+0

Das hat funktioniert, es war ein "l" und nicht eine "1" die ich benutze es ist falsch. Vielen Dank! –

2

Es weder bash oder POSIX-Syntax, die erlaubt:

$[ integer expression ] 

Vorausgesetzt, dass Sie den ganzzahligen Ergebnis der Berechnungen zugewiesen werden soll, die richtige POSIX Syntax wäre:

TIER1PCT=$((TIER1COUNT * 100/TOTAL)) 
TIER2PCT=$((TIER2COUNT * 100/TOTAL)) 
TIER3PCT=$((TIER3COUNT * 100/TOTAL)) 

Ihre anderen Alternativen für ganzzahlige Mathematik sind mit let oder expr. (Achten Sie auf die unterschiedlichen Whitespace Anforderungen für jeden)