रिपोर्ट की गई त्रुटि तब दिखाई देती है जब चर शून्य (या खाली) होते हैं:
$ unset var3 var4; var5=$(($var4-$var3))
bash: -: syntax error: operand expected (error token is "-")
ऐसा इसलिए हो सकता है क्योंकि bc को दिया गया मूल्य गलत था। यह अच्छी तरह से हो सकता है कि bc को UPPERcase मानों की आवश्यकता है। इसकी जरूरत है BFCA3000
, नहीं bfca3000
। यह आसानी से बैश में तय हो गया है, बस ^^
विस्तार का उपयोग करें :
var3=bfca3000; var3=`echo "ibase=16; ${var1^^}" | bc`
इससे स्क्रिप्ट बदल जाएगी:
#!/bin/bash
var1="bfca3000"
var2="efca3250"
var3="$(echo "ibase=16; ${var1^^}" | bc)"
var4="$(echo "ibase=16; ${var2^^}" | bc)"
var5="$(($var4-$var3))"
echo "Diference $var5"
लेकिन bc [1] का उपयोग करने की कोई आवश्यकता नहीं है, क्योंकि bash सीधे अनुवाद और विकल्प का प्रदर्शन कर सकता है:
#!/bin/bash
var1="bfca3000"
var2="efca3250"
var5="$(( 16#$var2 - 16#$var1 ))"
echo "Diference $var5"
[१] नोट: मैं मान रहा हूं कि मूल्यों को ६४ बिट गणित में दर्शाया जा सकता है, क्योंकि अंतर की गणना आपकी मूल लिपि में बैश में की गई थी। बैश 64 बिट में संकलित होने पर (2 ** 63) -1 से कम पूर्णांक तक सीमित है। बीसी के साथ केवल यही अंतर होगा जिसकी ऐसी सीमा नहीं है।