Переназначение (в частности, увеличение) переменной в скрипте bash

Переназначение (в частности, увеличение) переменной в скрипте bash

Возможный дубликат:
Как выполнять целочисленные и плавающие вычисления в командной строке в bash или любом другом доступном языке?

Я хотел бы просто переназначить переменную (точнее, увеличить ее на 0.050) в скрипте bash. В следующем скрипте, который я написал, i— это (целый) индекс, а mytime— десятичное/двойное/плавающее число. «пс» (пикосекунда) — это единица времени, которую я использую в своих расчетах.

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

Но когда я запускаю этот скрипт с помощью bash test.sh, я получаю следующие сообщения об ошибках:

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

Почему это, кажется, интерпретируется mytimeкак команда или функция, а не как переменная? Можете ли вы помочь мне исправить это?

решение1

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

решение2

Две проблемы:

  1. Не используйте пробелы. Назначение — это VAR=value, а не VAR = value, VAR =valueили VAR= value. Это должен быть один токен, разделенный пробелами оболочки, а не два или три).
  2. Оболочка не делает арифметику таким образом. Для целочисленной математики вы можете сказать VAR=$(($VAR+1)), или вы можете прочитать этот превосходный вопрос для газиллиона других способов (целые, с плавающей точкой, инфиксные, постфиксные, возможно даже префиксные, произвольной точности и кухонной раковины):как можно выполнять целочисленные и плавающие вычисления в командной строке в bash или на любом другом доступном языке?

Связанный контент