Seu loop while
pode ser substituído por um loop for. Como o Bash não pode lidar com aritmética de ponto flutuante, você deve usar números inteiros normais e usar um programa como bc
para criar floats. O comando scale=1;
antes de $i/10
garante que sempre haja um único decimal (por exemplo, 0,1).
for ((i=1; i<=10; i++))
do
p=$(bc <<<"scale=1;$i/10")
echo ----probability---- $p
java $jvmargs -classpath $CP jbenchmarker.MainSimulation $p
done
Isso é equivalente a:
i=1
while ((i<=10))
do
p=$(bc <<<"scale=1;$i/10")
echo ----probability---- $p
java $jvmargs -classpath $CP jbenchmarker.MainSimulation $p
((i++))
done
command <<<...
é um truque que grava ... na entrada padrão de command
e é equivalente a echo ... | command