Скрипт оболочки для отображения совершенных чисел в заданном диапазоне чисел

#shell

Вопрос:

Я пытаюсь решить этот вопрос и знаю, как проверить идеальное число. Код, для которого используется

 read no
i=1
ans=0
while  [  $i  -le  `expr  $no  /  2` ]
do
if  [  `expr  $no  %  $i`  -eq  0  ]
then
ans=`expr  $ans     $i`
fi
i=`expr  $i     1`
done
if  [  $no  -eq  $ans ]
then  echo  $no is perfect
else
echo  $no is not perfect
fi
 

Я не в состоянии понять, как мне ввести диапазон чисел и проверить. Я считаю, что использование цикла «пока» было бы полезно, но я не могу понять, как это сделать?

Ответ №1:

Вам понадобится for цикл, как описано в https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs

 for ((no = 1; no < $upper_limit; no  )); do
    ...
done