কীভাবে একটি বিবৃতি দিতে হয় যা পরীক্ষামূলকভাবে অবশিষ্ট কিছু ব্যতীত অন্য কোনও কিছু দ্বারা বিভাজ্য কিনা তা পরীক্ষা করে


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

যদি [$ সংখ্যা] বিবৃতিটি হয় তবে কীভাবে সেটআপ করতে হয় তা আমি জানি না


স্বাগতম, রজার আপনি কি দয়া করে কোড ট্যাগগুলিতে আপনার প্রশ্নে কোডটি গুটিয়ে রাখতে পারেন (বা সম্পাদকের কোড বোতামটি ব্যবহার করতে পারেন)? এটা জিনিষ একটি তোলে অনেক সহজ পড়া।
টেলিমাচাস

উত্তর:


39

আপনি এখানে প্রদর্শিত অন্যদের তুলনায় বাশে একটি সাধারণ বাক্য গঠন ব্যবহার করতে পারেন:

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

ধন্যবাদ! আমি জানতাম একটি সহজ উপায় আছে কিন্তু কোন ভাগ্য হয় না। বাশ স্ক্রিপ্টিং আমার কাছে বরাবরই একটি কালো শিল্প ছিল।
কোয়াকোট কোয়েসোট

এটি ত্রুটি বার্তায়, "((: 08: বেসের জন্য খুব বড় মান (ত্রুটি টোকেন" 08 ")" এবং "((: 09: বেসের জন্য খুব বড় মান (ত্রুটি টোকেন" 09 ")) দেখুন) ubuntuforums.org/showthread.php?t=677751 ব্যাখ্যার জন্য।
রেড ক্রিকেট

@ রেডক্রিকেট: কেবলমাত্র আপনি যদি একটি শূন্য শূন্য প্রবেশ করেন। যদি এটি কোনও সমস্যা হয় তবে আপনি এটি করতে পারেন: বেস 10 হিসাবে ব্যাখ্যা if (( 10#$number % 5 == 0 ))করতে বাধ্য $numberকরা (অগ্রণী শূন্য দ্বারা সূচিত বেস 8 / অক্টালের পরিবর্তে) force
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ ডেনিস উইলিয়ামসন হ্যাঁ এটি আরও সঠিক। ধন্যবাদ! :)
রেড ক্রিকেট

11

এটির পূর্ণসংখ্যার গণিত না হওয়া অবধি কোনও বিসি প্রয়োজন নেই (যদিও আপনার ভাসমান পয়েন্টের জন্য বিসি লাগবে): ব্যাশে , (()) অপারেটর এক্সপ্রেসের মতো কাজ করে ।

অন্যরা যেমন অপারেশনটি নির্দেশ করেছে আপনি চান মডুলো (%)

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

3

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

1
বিকল্পভাবে, আপনি বিসি এর পরিবর্তে এক্সপ্রেস ব্যবহার করতে পারেন: বাকি =expr $number % $divisor
ড্যান ডায়ার

@ ড্যান হ্যাঁ এটি অপের পক্ষে যথেষ্ট হবে। যাইহোক, আমি মনে করি যেহেতু bcগণনাগুলিতে বিশেষী, এটি 33.3% 11.1 এর মতো জিনিসগুলি পরিচালনা করতে পারে যা exprসম্ভবত কমে যাবে oke
নাগুল

অবশ্যই দম বন্ধ হবে; এক্সপ্রেস এবং (()) কেবলমাত্র পূর্ণসংখ্যার গণিত পরিচালনা করে।
কোয়াকোট কোয়েক্সোট

3

Nagul এর উত্তর মহান, কিন্তু শুধুমাত্র FYI, অপারেশন যদি আপনি চান মডুলাস (অথবা মডিউল) এবং অপারেটর সাধারণত হয় %


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

কেবল সিনট্যাক্স নিরপেক্ষতার স্বার্থে এবং এই অংশগুলির চারপাশে ওভারট ইনফিক্স নোটেশন পক্ষপাত সংশোধন করার জন্য, আমি ব্যবহারের জন্য নাগুলের সমাধানটি পরিবর্তন করেছি 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

আমি বুঝতে পারি যে এটি একটি সত্যই পুরানো প্রশ্ন তবে কোড সম্পর্কে আমার একটি প্রশ্ন আছে। আমি তুলনায় তুলনামূলকভাবে নতুন এবং এই স্ক্রিপ্টটি চালানোর চেষ্টা করেছি। তবে এটি আমাকে কয়েকটি ত্রুটি দেয় এবং কেন সত্য তা আমি জানি না। নম্বর এবং বিভাজক প্রবেশ করার পরে আমি পেয়েছি: test.sh: 7: test.sh: dc: পাওয়া যায়নি অনুস্মারক: test.sh: 10: [: অপ্রত্যাশিত অপারেটর "আপনার সংখ্যা 2 দ্বারা বিভাজ্য নয়" কেন আপনার কোনও ধারণা আছে কেন ?
আরিউসআস্টার্টে

1
@AreusAstarte: এটা মানে আপনি না dcইনস্টল করা নেই।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.