সাধারণভাবে, শেলটি ভেরিয়েবলগুলিতে হেক্স, অক্ট এবং দশমিক সংখ্যা বুঝতে পারে, তবে তাদের সংজ্ঞা দেওয়া হয়েছে integers
:
$ declare -i v1 v2 v3 v4 v5 v6 v7
$ v1=0112
$ v2=74
$ v3=0x4a
$ v4=8#112
$ v5=10#74
$ v6=16#4a
$ v7=18#gg
echo "$v1 $v2 $v3 $v4 $v5 $v6 $v7"
74 74 74 74 74 74 304
বা এগুলি একটি "গাণিতিক সম্প্রসারণ" এর ফলাফল:
$ : $(( v1=0112, v2=74, v3=0x4a, v4=8#112, v5=10#74, v6=16#4a, v7=18#gg ))
$ echo "$v1 $v2 $v3 $v4 $v5 $v6 $v7"
74 74 74 74 74 74 304
সুতরাং, আপনার একটি পরিবর্তনশীল মানের সাথে সম্পর্কিত চরিত্রটি মুদ্রণের জন্য একটি উপায় প্রয়োজন।
তবে এখানে দুটি সম্ভাব্য উপায় রয়েছে:
$ var=$((0x65))
$ printf '%b\n' "\\$(printf '0%o' "$var")"
e
$ declare -i var
$ var=0x65; printf '%b\n' "\U$(printf '%08x' "$var")"
e
দুটি প্রিন্টফের প্রয়োজন, একটি হেক্সাডেসিমাল স্ট্রিংয়ে মান রূপান্তর করতে এবং দ্বিতীয়টি প্রকৃতপক্ষে অক্ষরটি মুদ্রণের জন্য।
দ্বিতীয়টি কোনও ইউনিকোড পয়েন্ট মুদ্রণ করবে (যদি আপনার কনসোলটি সঠিকভাবে সেট করা থাকে)।
উদাহরণ স্বরূপ:
$ var=0x2603; printf '%b\n' "\U$(printf '%08x' "$var")"
☃
একজন তুষার মানুষ।
যে চরিত্রটির যেমন utt-8 উপস্থাপনা f0 9f 90 ae
রয়েছে 0x1F42E
। জন্য অনুসন্ধান করুন cow face site:fileformat.info
থেকে এটি পেতে :
$ var=0x1F42F; printf '%b\n' "\U$(printf '%08x' "$var")"
🐮
দ্রষ্টব্য : ইউনিকোডে 4..৩ এর আগে ব্যাশের জন্য সমস্যা রয়েছে (সেই সংস্করণে এবং উপরের দিকে সংশোধন করা হয়েছে), ইউনিকোডির পয়েন্ট 128 এবং 255 (দশমিক ক্ষেত্রে) এর মধ্যে অক্ষরগুলি ভুলভাবে মুদ্রিত হতে পারে।
তথ্যসূত্র
চতুর্থ অনুচ্ছেদ ভিতরে PARAMETERS
মধ্যে man bash
:
যদি ভেরিয়েবলটির পূর্ণসংখ্যা বৈশিষ্ট্য সেট থাকে, তবে $ ((...)) সম্প্রসারণ ব্যবহার না করা হলেও (নীচে পাটিগণিত সম্প্রসারণ দেখুন) গণিতের এক্সপ্রেশন হিসাবে মানটি মূল্যায়ন করা হয়।
এর মধ্যে "শিল্প মূল্যায়ন" এর ভিতরে man bash
:
শীর্ষস্থানীয় 0 সহ ধ্রুবকগুলি অষ্টাল সংখ্যা হিসাবে ব্যাখ্যা করা হয়। একটি শীর্ষস্থানীয় 0x বা 0 এক্স হেক্সাডেসিমালকে বোঝায়। অন্যথায়, সংখ্যাগুলি [বেস #] এন রূপ নেয়, যেখানে alচ্ছিক বেসটি পাটিগণিত বেসকে উপস্থাপন করে 2 এবং 64 এর মধ্যে দশমিক সংখ্যা, এবং n সেই বেসের একটি সংখ্যা। যদি বেস # বাদ দেওয়া হয় তবে বেস 10 ব্যবহার করা হয়। 9 টির চেয়ে বড় অঙ্কগুলি সেই ক্রমে ছোট হাতের অক্ষর, বড় হাতের অক্ষর, @, এবং _ দ্বারা প্রতিনিধিত্ব করা হয়। যদি বেসটি 36 এর চেয়ে কম বা তার সমান হয় তবে ছোট এবং বড় হাতের অক্ষরগুলি 10 এবং 35 এর মধ্যে সংখ্যার প্রতিনিধিত্ব করতে আন্তরচিকভাবে ব্যবহার করা যেতে পারে।