Reatribuindo (especificamente, incrementando) uma variável em um script bash

Reatribuindo (especificamente, incrementando) uma variável em um script bash

Possível duplicata:
Como posso fazer cálculos inteiros e flutuantes na linha de comando, no bash ou em qualquer idioma disponível?

Gostaria simplesmente reatribuir uma variável (para ser específico, incrementá-la em 0.050) em um script bash. No script a seguir que escrevi, ié um índice (inteiro) e mytimeé um número decimal/duplo/flutuante. “ps” (picossegundo) é a unidade de tempo que estou usando em meus cálculos.

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

Mas, quando executo este script usando bash test.sh, recebo estas mensagens de erro:

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

Por que parece ser interpretado mytimecomo um comando ou função, em vez de uma variável? Você pode me ajudar a corrigir isso?

Responder1

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

Responder2

Dois problemas:

  1. Não use espaços em branco. Uma atribuição é VAR=value, não VAR = valueou . Deve ser um token delimitado por espaço em branco do shell, não dois ou três).VAR =valueVAR= value
  2. O shell não faz aritmética assim. Para matemática inteira, você pode dizer VAR=$(($VAR+1)), ou pode ler esta excelente pergunta para um zilhão de outras maneiras (inteiro, ponto flutuante, infixo, pós-fixo, possivelmente até mesmo prefixo, precisão arbitrária e a pia da cozinha):como posso fazer cálculos inteiros e flutuantes na linha de comando, no bash ou em qualquer idioma disponível?

informação relacionada