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