создание массива из вывода уравнения

Я хочу, например, разделить все целые числа от 1 до 5 на 8 и поместить их в массив. Я думал, что-то похожее на код ниже, но я уверен, что это неправильно и грязно:

 COUNTER=0
 until [  $COUNTER -lt 8 ]; do
        ${steps[$COUNTER]}=1+(5-1)/8*$COUNTER
        let COUNTER+=1
 done

Есть ли все-таки сделать это чисто, если мой код прав вообще?

1
задан 7 October 2015 в 16:25

2 ответа

Команда seq может увеличиваться с помощью float:

declare -a steps=($(seq 1 .5 5))

Вы можете получить приращение с помощью echo 'scale=1;(5-1)/8'|bc

2
ответ дан 23 May 2018 в 16:53

Да, но поскольку 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') )
2
ответ дан 23 May 2018 в 16:53

Другие вопросы по тегам:

Похожие вопросы: