Reasignar (específicamente, incrementar) una variable en un script bash

Reasignar (específicamente, incrementar) una variable en un script bash

Posible duplicado:
¿Cómo puedo hacer cálculos de números enteros y flotantes en la línea de comandos, en bash o en cualquier idioma disponible?

Me gustaría simplemente reasignar una variable (para ser específico, incrementarla en 0.050) en un script bash. En el siguiente script que escribí, ihay un índice (entero) y mytimeun número decimal/doble/flotante. "ps" (picosegundo) es la unidad de tiempo que estoy usando en mis cálculos.

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

Pero cuando ejecuto este script usando bash test.sh, recibo estos mensajes de error:

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 qué parece interpretarse mytimecomo un comando o una función, en lugar de como una variable? ¿Puedes ayudarme a corregir esto?

Respuesta1

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

Respuesta2

Dos problemas:

  1. No utilices espacios en blanco. Una tarea es VAR=value, no VAR = value, VAR =valueo VAR= value. Tiene que ser un token delimitado por espacios en blanco, no dos o tres).
  2. El shell no hace esa aritmética. Para matemáticas de enteros, puede decir VAR=$(($VAR+1)), o puede leer esta excelente pregunta para conocer miles de millones de otras formas (entero, punto flotante, infijo, sufijo, posiblemente incluso prefijo, precisión arbitraria y el fregadero de la cocina):¿Cómo puedo hacer cálculos de números enteros y flotantes en la línea de comandos, en bash o en cualquier idioma disponible?

información relacionada