में फ़्लोटिंग पॉइंट परिणाम मेरे सर्वर पर बैकअप स्क्रिप्ट है जो बैकअप के क्रॉन जॉब्स करता है, और मुझे बैकअप फ़ाइल का आकार सहित बैक अप की फ़ाइलों का सारांश भेजता है। स्क्रिप्ट के हिस्से के रूप में, मैं बाइट्स में फ़ाइल आकार से जीबी में फ़ाइल का आकार प्राप्त करने के लिए फ़ाइल के अंतिम आकार (1024^3) को विभाजित करना चाहता हूं।बैश पूर्णांक विभाजन
चूंकि बैश में फ्लोटिंग पॉइंट गणना नहीं है, इसलिए मैं परिणाम प्राप्त करने के लिए पीसी को पाइप का उपयोग करने की कोशिश कर रहा हूं, हालांकि मैं मूल उदाहरणों पर स्टंप कर रहा हूं।
मैं पैमाने को पाई का मान प्राप्त करने की कोशिश, तथापि,
भी निम्न काम करता है, हालांकि:
~ #bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4/3
1.33333333333333333333
22/7
3.14285714285714285714
q
0
quit
एक गैर इंटरैक्टिव संस्करण काम नहीं करता:
#echo $((22/7)) | bc
3
यह काम करता है:
#echo '22/7' | bc -l
3.14285714285714285714
लेकिन मुझे चर का उपयोग करने की आवश्यकता है। तो यह मदद नहीं करता है कि निम्नलिखित काम नहीं करता:
#a=22 ; b=7
#echo $((a/b)) | bc -l
3
मैं स्पष्ट रूप से बैश में चर का उपयोग कर के लिए वाक्य रचना में कुछ याद कर रहा हूँ, और मैं क्या गलत समझा गया है पर कुछ 'संकेत' के साथ इस्तेमाल कर सकते हैं।
रूप DigitalRoss कहा, मैं निम्नलिखित का उपयोग कर सकते हैं: हालांकि मैं नहीं कर सकते जैसे जटिल एक्सप्रेशन का उपयोग
#echo $a/$b | bc -l
3.14285714285714285714
:
#echo $a/(($b-34)) | bc -l
-bash: syntax error near unexpected token `('
#echo $a/((b-34)) | bc -l
-bash: syntax error near unexpected token `('
#echo $a/((b-34)) | bc -l
-bash: syntax error near unexpected token `('
कोई मेरे साथ चल बिन्दु परिणाम प्राप्त करने के लिए एक काम सही सिंटैक्स दे सकते हैं जटिल अंकगणितीय अभिव्यक्तियां?
बाश को पढ़ाना संभव है उदा। फ्लोटिंग पॉइंट परिणामों के साथ पूर्णांक विभाजन: देखें: http://stackoverflow.com/a/24431665/3776858 – Cyrus