Para converter de frações para decimais no bash, faça algo como
myvar=$(echo "scale=4; 5/10" | bc)
Em seguida, para fazer um loop nesse valor,
for i in $(seq 1 1000); do sleep $myvar; done
Minha implementação de suspensão no Debian (GNU) parece aceitar valores de suspensão decimais.
Infelizmente ..
Com esse tipo de precisão (4-5 casas decimais), você vai querer algo como um script perl ou um programa compilado; a sobrecarga de chamar qualquer programa dentro do loop vai adicionar muita instabilidade. Chamar o sono em si levará alguns milissegundos.
Considere o seguinte, um 1 / 10.000 de segundo sono, feito 1000 vezes:
time for i in $(seq 1 1000); do sleep 0.0001; done
real 0m2.099s
user 0m3.080s
sys 0m1.464s
O resultado esperado seria 1/10 de segundo. O sono não chega nem perto das tolerâncias que você quer.
usando o Perl :: HiRes do Perl, 1000 * 1000 microssegundos:
my $i=0;
for($i=0;$i<=1000;$i++) {
usleep(1000);
}
real 0m1.133s
user 0m0.024s
sys 0m0.012s
nos dá muito mais perto de um segundo.