web-dev-qa-db-ja.com

何かが剰余なしで他のものと割り切れるかどうかをチェックするステートメントを作成する方法(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

if [$ number]ステートメントは設定方法がわからない

23
Roger

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

いいえbc整数演算である限り必要ありません(ただし、浮動小数点にはbcが必要です):bashでは、((())演算子はexpr

他の人が望む操作は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
11
quack quixote

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
3
user4358

Nagulの答えは素晴らしいですが、ただfyiです。必要な演算はモジュラス(またはモジュロ)であり、演算子は通常%

3
Telemachus

私はそれを別の方法で行いました。それがあなたのために働くかどうかを確認してください。
例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->同じ番号ではありません

1
smilyface

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
Red Cricket

構文の中立性とこれらの部分のあからさまな中置表記バイアスを修正するために、dcを使用するようにnagulのソリューションを変更しました。

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