題 如何製作一個語句,檢查某些東西是否可被其他東西整除而沒有餘數(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]語句是我不知道如何設置的


19
2017-10-01 23:20


起源


歡迎,羅傑。你能用代碼標籤包裝問題中的代碼(或使用編輯器上的代碼按鈕)嗎?它讓事情成為現實 批量 更容易閱讀。 - Telemachus


答案:


您可以在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

34
2017-10-02 00:21



謝謝!我知道必須有一個更簡單的方法,但沒有任何運氣。 bash腳本對我來說一直是一種黑色藝術。 - quack quixote
這將導致錯誤消息,“((:08:對於基數來說太大了(錯誤令牌是”08“)”和“((:09:對於基數來說價值太大(錯誤令牌是”09“)”“請參閱 ubuntuforums.org/showthread.php?t=677751 解釋。 - Red Cricket
@RedCricket:僅當您輸入前導零時。如果這是一個問題,你可以這樣做: if (( 10#$number % 5 == 0 )) 強迫 $number 被解釋為基數10(而不是前導零所暗示的基數8 /八進制)。 - Dennis Williamson
@Deniis Williamson是的,這更準確。謝謝! :) - Red Cricket


沒有 公元前 只要它是整數數學就需要(雖然你需要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

10
2017-10-01 23:45





如何使用 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
2017-10-01 23:31



或者,您可以使用expr而不是bc:remainder =expr $number % $divisor - Dan Dyer
@Dan是的它應該足夠OP。但是,我想是的 bc 專門從事計算,它可以處理像33.3%11.1這樣的東西 expr 可能會窒息。 - nagul
肯定會窒息; expr和(())只處理整數數學。 - quack quixote


Nagul的答案很棒,但只是fyi,你想要的操作是模數(或模數),操作符一般 %


2
2017-10-01 23:37





我以不同的方式做到了。檢查它是否適合您。
例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
2018-02-27 05:02





只是為了語法中立並修復這些部分的明顯中綴符號偏差,我修改了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

0
2018-03-13 02:25



我意識到這是一個非常古老的問題,但我對代碼有疑問。我對bash比較新,只是試著運行這個腳本。但它給了我一些錯誤,老實說我不知道為什麼。輸入數字和除數後我得到:test.sh:7:test.sh:dc:not found餘數:test.sh:10:[:意外運算符“你的數字不能被2整除”你知道為什麼嗎? ? - AreusAstarte
@AreusAstarte:這意味著你沒有 dc 安裝。 - Dennis Williamson


你也可以使用 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
2017-08-06 16:10