#linux #bash #loops #sum
Вопрос:
каким должно быть условие для while перед добавлением циклов while он печатает даже не до 100, но мне нужно напечатать сумму четных чисел
#!/bin/bash
sum=0
for((n=2;n<=100;n=n 2))
do
echo $n
while [[$n 0]] # what should be condition for while loop
do
sum= `expr sum $n`
done
echo "sum is $sum "
done
Комментарии:
1. Вам не нужна
while
петля.2. Вам это тоже не нужно
expr
.3. Зачем ты это делаешь здесь
bash
?4. Пожалуйста, вставьте свой сценарий по адресу shellcheck.net и постарайтесь выполнить содержащиеся там рекомендации.
Ответ №1:
Считается ли это ^_* :
kent$ seq -s 2 2 100|bc
2550
Ответ №2:
k=0;
for i in {1..100}; do
if [[ $(( i % 2 )) == 0 ]]; then
let k=k i
fi ; done
echo $k
С принтами
2550
или это:
k=0; for i in {1..100}; do
if (( i % 2 == 0 )); then
(( k=k i )) ; fi ; done ; echo $k
Ответ №3:
У вас вообще не должно быть while
петли. Вы уже повторяете for
цикл.
#!/bin/bash
sum=0
for((n=2;n<=100;n=n 2))
do
echo $n
((sum =n))
done
echo "sum is $sum "
Комментарии:
1.
sum=$((sum n))
или(( sum = n ))
(или: $((sum = n))
, я думаю). В этом нет необходимостиlet
, что устарело.2. Спасибо, я не знал об устаревании.