Я хочу, например, разделить все целые числа от 1 до 5 на 8 и поместить их в массив. Я думал, что-то похожее на код ниже, но я уверен, что это неправильно и грязно:
COUNTER=0
until [ $COUNTER -lt 8 ]; do
${steps[$COUNTER]}=1+(5-1)/8*$COUNTER
let COUNTER+=1
done
Есть ли все-таки сделать это чисто, если мой код прав вообще?
Команда seq может увеличиваться с помощью float:
declare -a steps=($(seq 1 .5 5))
Вы можете получить приращение с помощью echo 'scale=1;(5-1)/8'|bc
Да, но поскольку bash не выполняет арифметику с плавающей запятой, вам нужно будет использовать другой инструмент и сохранить его вывод в массиве bash. Например:
$ perl -le 'print $_/8 for 1..5'
0.125
0.25
0.375
0.5
0.625
Сохранить в массиве с помощью:
array=( $(perl -le 'print $_/8 for 1..5') )