উল্লিখিত ত্রুটিটি যখন ভেরিয়েবলগুলি নাল (বা খালি) হয় তখন উপস্থিত হয়:
$ unset var3 var4; var5=$(($var4-$var3))
bash: -: syntax error: operand expected (error token is "-")
এটি ঘটতে পারে কারণ বিসিকে দেওয়া মানটি ভুল ছিল। এটি ভাল হতে পারে যে বিসি-র জন্য ইউপিপ্র্যাসের মান প্রয়োজন। এটি প্রয়োজন 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"
তবে বিসি ব্যবহার করার দরকার নেই [1], কারণ বাশ সরাসরি অনুবাদ এবং বিয়োগফল সম্পাদন করতে পারে:
#!/bin/bash
var1="bfca3000"
var2="efca3250"
var5="$(( 16#$var2 - 16#$var1 ))"
echo "Diference $var5"
[1] দ্রষ্টব্য: আমি ধরে নিচ্ছি যে মানগুলি bit৪ বিট গণিতে উপস্থাপিত হতে পারে, কারণ আপনার মূল স্ক্রিপ্টে পার্থক্যটি ব্যাশে গণনা করা হয়েছিল। বাশ 64৪ বিটে সংকলিত হলে ((২ ** 63) -1) এর চেয়ে কম পূর্ণসংখ্যায় সীমাবদ্ধ। বিসি-র সাথে এটিই কেবল তফাত হবে যার সীমা নেই।