Como fazer uma declaração que verifica se algo é divisível por outra coisa sem um resto (BASH)

19
#!/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

a declaração if [$ number] é o que eu não sei como configurar

    
por John T 02.10.2009 / 01:20

7 respostas

34

Você pode usar uma sintaxe mais simples no Bash do que algumas das outras mostradas aqui:

#!/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
    
por 02.10.2009 / 02:21
10

Não é necessário bc desde que seja matemática inteira (você precisará de bc para ponto flutuante): No bash, o operador (()) funciona como < strong> expr .

Como outros apontaram, a operação que você quer é módulo (%) .

#!/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
    
por 02.10.2009 / 01:45
2

Que tal usar o comando 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
    
por 02.10.2009 / 01:31
2

A resposta de Nagul é ótima, mas apenas fyi, a operação que você quer é módulo (ou módulo) e o operador geralmente é % .

    
por 02.10.2009 / 01:37
1

Eu fiz isso de uma maneira diferente. Verifique se funciona para você.
Exemplo 1:

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

Exemplo 2:

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

Lógica simples.

12/3 = 4
4 * 3 = 12 - > mesmo número

11/3 = 3
3 * 3 = 9 - > não é o mesmo número

    
por 27.02.2014 / 06:02
0

Apenas no interesse da neutralidade da sintaxe e consertando o viés de notação infix em torno dessas partes, modifiquei a solução do nagul para usar 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
    
por 13.03.2012 / 03:25
0

Você também pode usar expr da seguinte forma:

#!/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
    
por 06.08.2015 / 18:10