방정식 출력에서 ​​배열 생성

방정식 출력에서 ​​배열 생성

예를 들어 1부터 5까지의 모든 정수를 8로 나누어 배열에 넣고 싶습니다. 나는 아래 코드와 비슷한 것을 생각하고 있었지만 그것이 잘못되고 더러운 것이라고 확신합니다.

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

내 코드가 전혀 정확하다면 이 작업을 깔끔하게 수행할 수 있습니까?

답변1

명령 은 seq부동소수점만큼 증가할 수 있습니다.

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

당신은 증가분을 얻을 수 있습니다echo 'scale=1;(5-1)/8'|bc

답변2

예, 하지만 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') )

답변3

bash정수 연산만 할 수 있습니다. bc수레에 사용 :

from=1
to=5
steps=8
for c in $(seq 0 $steps) ; do
    ar[c]=$(echo $(bc -l <<< "$from + ($to - $from) / $steps * $c"))
done
echo "${ar[@]}"

관련 정보