web-dev-qa-db-fra.com

Comment faire une déclaration qui vérifie si quelque chose est divisible par quelque chose d'autre sans reste (BASH)

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

la déclaration if [$ number] est ce que je ne sais pas comment configurer

20
Roger

Vous pouvez utiliser une syntaxe plus simple dans Bash que certaines des autres présentées ici:

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

Non bc nécessaire tant que son calcul est entier (vous aurez besoin de bc pour virgule flottante cependant): En bash, l'opérateur (()) fonctionne comme expr.

Comme d'autres l'ont fait remarquer, l'opération souhaitée est modulo (%).

#!/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
10
quack quixote

Comment utiliser la commande 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
nagul

La réponse de Nagul est excellente, mais pour le moment, l'opération souhaitée est un module (ou modulo) et l'opérateur est généralement %.

2
Telemachus

Je l'ai fait d'une manière différente. Vérifiez si cela fonctionne pour vous.
Exemple 1:

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

Exemple 2:

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

Logique simple.

12/3 = 4
4 * 3 = 12 -> même numéro

11/3 = 3
3 * 3 = 9 -> pas le même nombre

1
smilyface

Vous pouvez également utiliser expr comme ceci:

#!/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
Red Cricket

Juste dans l'intérêt de la neutralité syntaxique et de la correction du biais de la notation infixe manifeste autour de ces parties, j'ai modifié la solution de nagul pour qu'elle utilise 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
0
Eroen