मुझे स्क्रिप्टिंग पर कुछ समस्याएं हैं ... अगर कोई मेरी मदद कर सकता है, तो यह वास्तव में अच्छा होगा!शेल स्क्रिप्ट के साथ अंकगणितीय समस्या
मेरे स्क्रिप्ट है:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
और मैं इस त्रुटि हो रही है:
./calc_serv_demand.sh: line 12: 0.0895406: syntax error: invalid arithmetic operator (error token is ".0895406")
कोई मेरी मदद कर सकते हैं?
मुझे लगता है कि ऐसा इसलिए है क्योंकि बैश केवल पूर्णांक के साथ काम करता है ... हालांकि, मुझे फ्लोट मानों का उपयोग करने की आवश्यकता है। पहले से
धन्यवाद
समस्या हल:
दौरा = $ (echo $ WR + $ आरडी | ईसा पूर्व); $ विज़िट्स
SERVICE_DEMAND = $ ($ विज़िट्स '*' $ SERVICE_TIME | बीसी) प्रतिबिंबित करें; echo $ SERVICE_DEMAND
एचयूएम ... यह योग के लिए काम करता है, यह गुणा के लिए अच्छा काम नहीं करता है। यह अजीब है क्योंकि मैंने बीसी मैनुअल पर जांच की है और इसे काम करना चाहिए! एक नज़र डालें: मेरी स्क्रिप्ट: echo $ WR + $ RD | बीसी और> विज़िट; विज़िट = $ ($ WR + $ RD | बीसी गूंजें); # ठीक काम करता है $ विज़िट SERVICE_DEMAND = $ ($ विज़िट्स * $ SERVICE_TIME | बीसी) प्रतिबिंबित करें; # एक अजीब त्रुटि गूंज लौट $ SERVICE_DEMAND त्रुटि: 0,0895406 3,42007 12,401 3,5096106 (standard_in) 1: सिंटेक्स त्रुटि (standard_in) 1: अवैध वर्ण: कश्मीर (standard_in) 1: अवैध वर्ण: एच (standard_in) 1: अवैध चरित्र: टी ... – Alucard
@user: चूंकि '* 'के खोल के लिए एक विशेष अर्थ है जिसे आपको या तो \\ *' या '' * '' लिखना है। इसके अलावा, आपको फ़ाइल को आउटपुट करने के बजाय सीधे एक चर के लिए गणना का परिणाम असाइन करना चाहिए: 'VISITS = $ ($ WR + $ RD | bc echo)'। –
@ user368453: यदि आप '*' का 'echo' करते हैं तो यह वर्तमान निर्देशिका में सभी फ़ाइल नाम प्रदर्शित करता है। बस फॉर्मूला के चारों ओर उद्धरण डालें और यह काम करेगा: 'SERVICE_DEMAND = $ (echo" $ विज़िट्स * $ SERVICE_DEMAND "| बीसी)' –