for i in $(seq 1 0.05 3); do
# loop body
echo i equals $i
done
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?
Dois problemas:
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). 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?
Tags bash scripting shell-script