20
#!/bin/bash


Echo “Enter a number”

Read  $number

If [$number ] ; then 

Echo “Your number is divisible by 5”

Else

Echo “Your number is not divisible by 5”

fi

оператор if [$ number] - это то, что я не знаю, как настроить

7 ответов7

34

Вы можете использовать более простой синтаксис в Bash, чем некоторые другие, показанные здесь:

#!/bin/bash
read -p "Enter a number " number    # read can output the prompt for you.
if (( $number % 5 == 0 ))           # no need for brackets
then
    echo "Your number is divisible by 5"
else
    echo "Your number is not divisible by 5"
fi
10

Нет необходимости в bc, если это целочисленная математика (хотя для плавающей запятой вам понадобится bc): В bash оператор (()) работает как expr.

Как уже отмечали другие, вы хотите выполнить операцию по модулю (%).

#!/bin/bash  

echo "Enter a number"
read number

if [ $(( $number % 5 )) -eq 0 ] ; then
   echo "Your number is divisible by 5"
else
   echo "Your number is not divisible by 5"
fi
2

Как насчет использования команды bc :

!/usr/bin/bash

echo “Enter a number”
read number
echo “Enter divisor”
read divisor
remainder=`echo "${number}%${divisor}" | bc`
echo "Remainder: $remainder"

if [ "$remainder" == "0" ] ; then
        echo “Your number is divisible by $divisor”
else
        echo “Your number is not divisible by $divisor”
fi
2

Ответ Нагула великолепен, но, к вашему сведению, операция, которую вы хотите, - это модуль (или модуль), а оператор, как правило, % .

1

Я сделал это по-другому. Проверьте, работает ли он для вас.
Пример 1:

num=11;
[ `echo $num/3*3 | bc` -eq $num ] && echo "is divisible" || echo "not divisible"
Output : not divisible

Пример 2:

num=12;
[ `echo $num/3*3 | bc` -eq $num ] && echo "is divisible" || echo "not divisible"
Output : is divisible

Простая логика.

12/3 = 4
4 * 3 = 12 -> тот же номер

11/3 = 3
3 * 3 = 9 -> не тот же номер

0

Вы также можете использовать expr так:

#!/bin/sh

echo -n "Enter a number: "
read number
if [ `expr $number % 5` -eq 0 ]
then
    echo "Your number is divisible by 5"
else
    echo "Your number is not divisible by 5"
fi
0

В интересах нейтральности синтаксиса и исправления предвзятого представления инфиксных обозначений вокруг этих частей, я изменил решение nagul для использования dc .

!/usr/bin/bash

echo “Enter a number”
read number
echo “Enter divisor”
read divisor
remainder=$(echo "${number} ${divisor}%p" | dc)
echo "Remainder: $remainder"

if [ "$remainder" == "0" ]
then
        echo “Your number is divisible by $divisor”
else
        echo “Your number is not divisible by $divisor”
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .