Почему оператор if не вызывается?

avatar
Mohammed Wasim
8 апреля 2018 в 10:50
62
1
1

Я новичок в написании сценариев Bash и мне нужна помощь в моем проекте. В моем сценарии (код ниже) я хочу разрешить пользователям вводить два числа: начальный номер и конечный номер.

Четные числа в этом диапазоне должны быть только распечатаны, что мне удалось сделать.

Теперь я ищу определенные числа, если они соответствуют требованию делиться на семь, например, чтобы распечатать слово рядом с ним, т.е. 14: Шоколад.

Я пытался реализовать следующий оператор if, однако он не работает.

#!/bin/bash
echo "Enter first number:"
read firstnum
echo "Enter second number:"    
read secondnum

for ((firstnum = 0; counter <= secondnum; counter +=2)); do
 echo "$counter"
done

if (( $counter % 7 )); then
 echo "$counter: Drink"
fi

Я надеюсь, что вы можете помочь с этой проблемой. Спасибо.

Источник
Maroun
8 апреля 2018 в 10:55
0

Разве if не должно быть внутри цикла?

hnefatl
8 апреля 2018 в 10:56
2

Почти уверен, что firstnum = 0 должно быть counter = firstnum. Вам также не нужен $ в вашем операторе if, и я предполагаю, что if должен быть внутри цикла?

hnefatl
8 апреля 2018 в 11:25
0

Подобное использование read вызовет проблемы, поскольку оно захватывает новые строки, которые вам действительно не нужны в ваших «числах». Вам также понадобится counter % 7 == 0 в вашем if, так как % — это бинарная операция, а не бинарный предикат.

Ответы (1)

avatar
kyodev
8 апреля 2018 в 11:41
0

некоторые идеи:

#!/bin/bash

echo -n "Enter first number: "
read firstnum
echo -n "Enter second number: "    
read secondnum
echo


# ideally here, verify that :
# the values are numeric
# firstnum < secondnum

for (( counter = firstnum; counter <= secondnum; counter += 1 )); do    # counter += 2 is valid also
    if (( counter % 2 )); then
        echo "$counter Drink"
    else
        echo "$counter: even"
    fi
done