как найти сумму даже нет до 100 в linux

#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. Спасибо, я не знал об устаревании.