ধরে নিচ্ছি আপনি bashরিলিজ ৪.০ বা আরও নতুন ব্যবহার করছেন ...
CODE=A
declare -A domain
domain=(
[a]=com.tencent.ig
[b]=com.vng.pubgmobile
[c]=com.pubg.krmobile
[d]=com.rekoo.pubgm
)
PN=${domain[${CODE,,}]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
কোডটিতে, আমি একটি ডোমেনির সমস্ত অক্ষর সমন্বিত একটি অ্যারেসিয়েটিভ অ্যারে সংজ্ঞায়িত করি, প্রতিটি একক অক্ষরের লোয়ার-কেসের সাথে যুক্ত।
$PNপরিবর্তনশীল ডোমেইন নাম কম cased সংশ্লিষ্ট নির্ধারিত হয় $CODEমান ( ${CODE,,}রিটার্ন মান $CODEশুধুমাত্র ছোট হাতের অক্ষর পরিণত) এই অ্যারে থেকে, কিন্তু যদি $CODEএকটি বৈধ এন্ট্রি সঙ্গে সঙ্গতিপূর্ণ নয় domainতালিকা, এটি একটি সহ স্ক্রিপ্টের প্রস্থান করে ত্রুটি.
${variable:?error message}পরামিতি প্রতিকল্পন মান প্রসারিত হবে $variable(কোড যথাযথ ডোমেন) কিন্তু ত্রুটি বার্তা সহ স্ক্রিপ্ট থেকে প্রস্থান করবে মান খালি পাওয়া যায় না। আপনি আপনার কোডের মতো ত্রুটি বার্তার হুবহু একই বিন্যাসটি পান না তবে অবৈধ হলে এটি মূলত একই আচরণ করবে $CODE:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
আপনি যদি চরিত্র গণনা সম্পর্কে যত্নশীল হন তবে আমরা এটি আরও সংক্ষিপ্ত করে তুলতে পারি:
CODE=A
declare -A domain=( [a]=tencent.ig [b]=vng.pubgmobile [c]=pubg.krmobile [d]=rekoo.pubgm )
PN=com.${domain[${CODE,,}]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
অপ্রয়োজনীয় নিউলাইনগুলি মোছা ছাড়াও, আমি com.প্রতিটি ডোমেন থেকেও সরিয়েছি (এটি পরিবর্তে নিয়োগের ক্ষেত্রে যুক্ত করা হয় PN)।
নোট করুন যে উপরের সমস্ত কোড এমনকি একাধিক অক্ষরের মানের জন্যও কাজ করবে $CODE(যদি domainঅ্যারেতে এর জন্য নিম্ন-কেসযুক্ত কীগুলি বিদ্যমান থাকে )।
পরিবর্তে যদি $CODEএকটি সংখ্যাসূচক (শূন্য-ভিত্তিক) সূচক হয়, এটি কোডটি কিছুটা সরল করবে:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
এটি অতিরিক্ত domainপ্রতিটি লাইনে প্রতি একটি এন্ট্রি সহ সহায়ক ফাইল থেকে অ্যারেটি পড়া সহজ করে তোলে :
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bashকোড? নাকি আপনার মনে অন্য কোনও শেল আছে?