Re-designando (especificamente, incrementando) uma variável em um script bash [duplicado]

0

Eu gostaria de simplesmente reatribuir uma variável (para ser específico, incrementá-la por 0.050 ) em um script bash. No script a seguir que eu 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 esse script usando bash test.sh , recebo essas 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 estar interpretando mytime como um comando ou uma função, em vez de uma variável? Você pode por favor me ajudar a corrigir isso?

    
por Andrew 30.06.2012 / 19:19

2 respostas

5
for i in $(seq 1 0.05 3); do
  # loop body
  echo i equals $i
done
    
por 30.06.2012 / 19:33
2

Dois problemas:

  1. Não use espaço em branco. Uma atribuição é VAR=value , não VAR = value , VAR =value ou VAR= value . Deve ser um token delimitado por espaços em branco, não dois ou três).
  2. O shell não faz aritmética assim. Para matemática inteira, você pode dizer VAR=$(($VAR+1)) , ou você pode ler essa excelente pergunta por um zilhão de outras maneiras (inteiro, ponto flutuante, infixo, postfix, possivelmente até prefixo, precisão arbitrária e a pia da cozinha): como posso fazer linha de comando inteiro & cálculos de flutuação, em bash, ou em qualquer idioma disponível?
por 30.06.2012 / 19:31