আমি আমাদের ল্যাব পরীক্ষায় ইনপুট সরবরাহ করতে একটি সিরিয়াল টার্মিনাল ব্যবহার করছি। আমি এটি ব্যবহার করে দেখতে পেলাম
$ echo "5X5"
শুধু একটি স্ট্রিং ফেরত "5X5"
। গুণের ক্রিয়াকলাপ চালানোর জন্য কোন আদেশ আছে?
আমি আমাদের ল্যাব পরীক্ষায় ইনপুট সরবরাহ করতে একটি সিরিয়াল টার্মিনাল ব্যবহার করছি। আমি এটি ব্যবহার করে দেখতে পেলাম
$ echo "5X5"
শুধু একটি স্ট্রিং ফেরত "5X5"
। গুণের ক্রিয়াকলাপ চালানোর জন্য কোন আদেশ আছে?
উত্তর:
হ্যাঁ, কিছু সাধারণ গণিত করার জন্য আপনি বাশের অন্তর্নির্মিত গাণিতিক সম্প্রসারণটি$(( ))
ব্যবহার করতে পারেন
$ echo "$((5 * 5))"
25
পরীক্ষা করে দেখুন ব্যাশ রেফারেন্স ম্যানুয়াল মধ্যে শেল পাটিগণিত অধ্যায় অপারেটার একটি সম্পূর্ণ তালিকা জন্য।
সম্পূর্ণরূপে স্বার্থে, যেমন অন্যান্য নির্দেশিত, আপনার যদি স্বেচ্ছাচারিত নির্ভুলতার প্রয়োজন হয়, bc
বা dc
আরও ভাল হবে।
এর সাথে পাটিগণিতের সম্প্রসারণকে সমর্থন করে $(( expression ))
। উদাহরণ স্বরূপ:
$ echo $(( 5 * 5 ))
25
বেশ কয়েকটি ইউটিলিটিস বিসি এবং এক্সপ্রেস সহ পাটিগণিত সরবরাহ করে ।
$ echo '5 * 5' | /usr/bin/bc
25
$ /usr/bin/expr 5 \* 5
25
শাস্ত্রীয় সমাধানটি হ'ল:
expr 5 \* 5
আর একটি দুর্দান্ত বিকল্প হ'ল:
echo 5 5\*p | dc
এই উভয় সমাধান কেবলমাত্র পূর্ণসংখ্যার ক্রিয়াকলাপগুলির সাথে কাজ করবে।
k
। আমি অবশ্যই ডিফল্ট নির্ভুলতা 0 (পূর্ণসংখ্যার কাটা) মনে করছি। আমি কি ভুল স্মরণ করছি, বা কেবল নতুন বাস্তবায়নগুলি আচরণের পরিবর্তন হয়েছে?
dc
বেশি বীজগণিত এবং কম আরপিএন কম হওয়ায় কয়েক বছর ধরে আমি খুব কমই ব্যবহার করেছি তাই আমার মনে নেই। একটি জিএনইউ সিস্টেমে আমি ব্যবহার করছি, ডিফল্টটি 0 হয় An একটি পুরানো (1993) ফ্রিবিএসডি man
পৃষ্ঠায় ডিফল্টটিকে শূন্য বলে উল্লেখ করা হয়, তবে পুরানো বিএসডি man
পৃষ্ঠাগুলি তা দেয় না।
echo '4 k 50.5 7 / p' | dc
কাজ করে (আউটপুট 7.2142
:)।
আমি এই ফাংশনটি ব্যবহার করি যা bc
ভাসমান পয়েন্ট গণনাগুলি ব্যবহার করে এবং সমর্থন করে:
c () {
local a
(( $# > 0 )) && a="$@" || read -r -p "calc: " a
bc -l <<< "$a"
}
উদাহরণ:
$ c '5*5'
25
$ c 5/5
1.00000000000000000000
$ c 3.4/7.9
.43037974683544303797
বাশের পাটিগণিতের বিস্তৃতি ভাসমান সমর্থন করে না (তবে কর্ন শেল এবং জেডএস ডু)।
উদাহরণ:
$ ksh -c 'echo "$((3.0 / 4))"'
0.75
আমি এটির জন্য একটি সাধারণ স্ক্রিপ্ট ব্যবহার করি:
me@mycomputer:~$ cat /usr/local/bin/c
#!/bin/sh
echo "$*" | sed 's/x/\*/g' | bc -l
তবে পরিবর্তনটি x
করার *
পর থেকে *
শেল একটি বিশেষ চরিত্র। এটি নিম্নলিখিত হিসাবে ব্যবহার করুন:
c 5x5
c 5-4.2 + 1
c '(5 + 5) * 30'
(এক্সপ্রেশনটিতে কোনও বন্ধনী থাকলে আপনার এখনও উদ্ধৃতি ব্যবহার করতে হবে)।tr
একাধিক অক্ষরের জন্য অক্ষর ম্যাপিং করতে ব্যবহার করা যেতে পারে।
আপনি যদি অজগর পছন্দ করেন এবং প্যাকেজ ইনস্টল করার কোনও বিকল্প রাখেন তবে আমি যে ইউটিলিটি তৈরি করেছি তা আপনি ব্যবহার করতে পারেন ।
# install pythonp
python -m pip install pythonp
pythonp "5*5"
25
pythonp "1 / (1+math.exp(0.5))"
0.3775406687981454
# define a custom function and pass it to another higher-order function
pythonp "n=10;functools.reduce(lambda x,y:x*y, range(1,n+1))"
3628800
dc
ভাসমান সঙ্গে কাজ করে। ব্যবহার করে দেখুনecho '4 k 50 7 / p' | dc
। আউটপুট হয়7.1428
।k
কমান্ড স্পষ্টতা সেট করে।