আপনি যা অর্জন করতে চান তার কাছে যাওয়ার কয়েকটি উপায় রয়েছে।
1. $ BASH_VERSION ব্যবহার করুন
$BASH_VERSION
পরিবর্তনশীল কী আছে তা দেখার জন্য এটি যথেষ্ট । ব্যক্তিগতভাবে আমি সাবস্কেলটি এর মতো ব্যবহার করতাম:
$ (read -d "." version trash <<< $BASH_VERSION; echo "$version" )
4
নোট করুন যে <<<
এখানে-ডকটির জন্য সিনট্যাক্সটি পোর্টেবল নয়, যদি আপনি এটি ব্যবহার করে যাচ্ছেন /bin/sh
যা উবুন্টুতে ড্যাশ এবং অন্য কোনও সিস্টেমে অন্য কিছু হতে পারে
বিকল্প উপায় কেস স্টেটমেন্ট বা যদি বিবৃতি মাধ্যমে হয়। ব্যক্তিগতভাবে, আমি এটি করতাম:
bash-4.3$ case $BASH_VERSION in 4.*) echo "Can use associative arrays";; ?) echo "can't use associative arrays" ;; esac
Can use associative arrays
সম্ভবত বহনযোগ্যতার স্বার্থে, আপনার সম্ভবত পরীক্ষা করা উচিত যে এর মতো পরিবর্তনশীল এমন কোনও কিছু দিয়ে প্রথম স্থানে সেট করা আছে কিনা check [ -n $BASH_VERSION ]
এটি সম্পূর্ণরূপে স্ক্রিপ্টে ব্যবহৃত ফাংশন হিসাবে পুনরায় লেখা যেতে পারে। এর দীর্ঘ লাইন কিছু:
#!/bin/bash
version_above_4(){
# check if $BASH_VERSION is set at all
[ -z $BASH_VERSION ] && return 1
# If it's set, check the version
case $BASH_VERSION in
4.*) return 0 ;;
?) return 1;;
esac
}
if version_above_4
then
echo "Good"
else
echo "No good"
fi
এটি ওয়ান-লাইনার নয়, যদিও এটি আরও ভাল। পরিমাণের তুলনায় মান.
2. কি ইনস্টল করা আছে তা পরীক্ষা করুন
তার জন্য আপনাকে এর apt-cache policy
মতো আউটপুট ফিল্টার করতে হবে
$ apt-cache policy bash | awk -F '[:.]' '/Installed:/{printf "%s\n",substr($2,2)}'
4
dpkg-query
কিছু ফিল্টারিং এর মাধ্যমেও কাজে আসতে পারে awk
।
$ dpkg-query -W bash | awk '{print substr($2,1,1)}'
4
মনে রাখবেন এটি পোর্টেবল নয়, যেহেতু কোনও সিস্টেমে কোনও ইনস্টল dpkg
বা apt
ইনস্টলড নেই (উদাহরণস্বরূপ, আরএইচইল বা ফ্রিবিএসডি), এটি আপনার কোনও ভাল করবে না।
৩. যদি কোনও ত্রুটি থাকে তবে স্ক্রিপ্ট থেকে প্রস্থান করতে সেট-ই ব্যবহার করুন
এটিকে ঘুরে দেখার এক উপায় হ'ল কেবলমাত্র ব্যবহারের জন্য সাহচর্যমূলক অ্যারেগুলি এগিয়ে যান এবং যখন bash
সেগুলি ব্যবহার না করা যায় তখন ত্যাগ করুন। স্ক্রিপ্টটি সহযোগী অ্যারে ব্যবহার করতে না পারলে set -e
নীচের লাইনটি #!/bin/bash
স্ক্রিপ্টটি ছাড়তে দেবে।
এটির জন্য আপনাকে ব্যবহারকারীকে স্পষ্টভাবে বলতে হবে: "আরে, আপনার সত্যিকারের বাশ সংস্করণ ৪.৩ বা তার বেশি প্রয়োজন, অন্যথায় স্ক্রিপ্টটি কাজ করবে না"। তারপরে দায়বদ্ধতা ব্যবহারকারীর উপর নির্ভর করে, যদিও কারও কারও পক্ষে যুক্তি হতে পারে যে এটি সত্যই সফ্টওয়্যার বিকাশের পক্ষে ভাল পদ্ধতির নয়।
৪. সমস্ত আশা ত্যাগ করুন এবং পোর্টেবল, পসিক্স-কমপ্লায়েন্ট স্ক্রিপ্ট লিখুন
bash
স্ক্রিপ্টগুলি পোর্টেবল নয় কারণ এর সিনট্যাক্স বোর্ন শেলের সাথে সামঞ্জস্যপূর্ণ নয়। আপনি যে স্ক্রিপ্টটি লিখছেন তা যদি কেবল উবুন্টুই নয়, বিভিন্ন সিস্টেমে ব্যবহার করা হয় তবে সমস্ত আশা ছেড়ে দিন এবং সহযোগী অ্যারেগুলি ব্যতীত অন্য কিছু ব্যবহারের উপায় খুঁজে বের করুন। এর মধ্যে দুটি অ্যারে থাকা বা একটি কনফিগারেশন ফাইল বিশ্লেষণ অন্তর্ভুক্ত থাকতে পারে। পার্ল বা পাইথন, যেখানে বাক্য গঠন কমপক্ষে তার চেয়ে কম বহনযোগ্য bash
।
$BASH_VERSION
এবং$BASH_VERSINFO
ভেরিয়েবল?