Neuzuweisung (insbesondere Inkrementieren) einer Variablen in einem Bash-Skript

Neuzuweisung (insbesondere Inkrementieren) einer Variablen in einem Bash-Skript

Mögliches Duplikat:
Wie kann ich in Bash oder einer anderen verfügbaren Sprache über die Befehlszeile Ganzzahl- und Gleitkommaberechnungen durchführen?

Ich möchte in einem Bash-Skript einfach eine Variable neu zuweisen (genauer gesagt, sie um erhöhen 0.050). In dem folgenden Skript, das ich geschrieben habe, iist ein (Integer-)Index und mytimeeine Dezimal-/Double-/Float-Zahl. „ps“ (Pikosekunde) ist die Zeiteinheit, die ich in meinen Berechnungen verwende.

#!/bin/bash
mytime = 0.000
for i in {1..3}
do
echo "$i: $mytime ps"
mytime = mytime + 0.050
done

Aber wenn ich dieses Skript mit ausführe bash test.sh, erhalte ich diese Fehlermeldungen:

test.sh: line 2: mytime: command not found
1:  ps
test.sh: line 6: mytime: command not found
2:  ps
test.sh: line 6: mytime: command not found
3:  ps
test.sh: line 6: mytime: command not found

mytimeWarum wird es anscheinend als Befehl oder Funktion interpretiert und nicht als Variable? Können Sie mir bitte helfen, das zu korrigieren?

Antwort1

for i in $(seq 1 0.05 3); do
  # loop body
  echo i equals $i
done

Antwort2

Zwei Probleme:

  1. Verwenden Sie keine Leerzeichen. Eine Zuweisung ist VAR=value, nicht VAR = value, VAR =valueoder VAR= value. Es muss sich um ein durch Leerzeichen getrenntes Shell-Token handeln, nicht um zwei oder drei).
  2. Die Shell führt solche Arithmetik nicht aus. Für ganzzahlige Mathematik können Sie sagen VAR=$(($VAR+1)), oder Sie können diese hervorragende Frage für eine Unmenge anderer Möglichkeiten lesen (Ganzzahl, Gleitkomma, Infix, Postfix, möglicherweise sogar Präfix, beliebige Genauigkeit und alles Mögliche):wie kann ich in Bash oder einer anderen verfügbaren Sprache über die Befehlszeile Ganzzahl- und Gleitkommaberechnungen durchführen?

verwandte Informationen