কম্পিউটার টিউটোরিয়াল

Bash স্ক্রিপ্টে অপশন পার্সিং 습득: ধাপে ধাপে গাইড

টার্মিনাল কমান্ডগুলো সাধারণত অপশন বা সুইচ থাকে, যেগুলো আপনি ব্যবহার করতে পারেন কমান্ডটি কীভাবে কাজ করবে সেটি মডিফাই করতে। অপশনগুলো POSIX স্পেসিফিকেশনে কমান্ড-লাইন ইন্টারফেসের জন্য অন্তর্ভুক্ত। এটি পুরনো UNIX অ্যাপ্লিকেশনlarla স্থাপিত একটি সম্মানিত কনভেনশন, তাই আপনার নিজস্ব কমান্ড তৈরি করার সময় Bash স্ক্রিপ্টে সেগুলো কীভাবে অন্তর্ভুক্ত করতে হয় সেটি জানা ভালো।

বেশির Sprachen-এ মত, Bash-এ অপশন পার্স করার কয়েকটি পদ্ধতি আছে। আজও আমার পছন্দের মেথডটি সেটি যা আমি প্যাট্রিক ভোল্কার্ডিং-এর স্ল্যাকওয়ার বিল্ড স্ক্রিপ্ট থেকে শিখেছিলাম, যেটি আমার শেল স্ক্রিপ্টিং-এ পরিচয় দিয়েছিল যখন আমি প্রথম লিনাক্স ডিসকভার করেছিলাম এবং OS-এর সাথে আসা প্লেইন টেক্সট ফাইলগুলোর মধ্যে সাহস করেছি।

Bash-এ অপশন পার্সিং

Bash-এ অপশন পার্স করার কৌশল হলো আপনার শেল স্ক্রিপ্টে পাস করা সকল আর্গুমেন্টের মধ্য দিয়ে সাইকেল করা, নির্ধারণ করা সেগুলো অপশন কিনা, এবং তারপর পরবর্তী আর্গুমেন্টে শিফ্ট করা। এই প্রসেসটি রিপিট করা যতক্ষণ না অপশন থাকে।

একটি সিম্পল বুলিয়ান অপশন (কभी কখনও সুইচ বা ফ্ল্যাগ বলা হয়) দিয়ে শুরু করুন:

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
ALPHA=1
shift 1
else
break
fi
done

echo $ALPHA

এই কোডে, আমি একটি while লুপ তৈরি করেছি যা ইনফিনিট লুপ হিসেবে কাজ করে যতক্ষণ না আর কোনো আর্গুমেন্ট প্রসেস করার জন্য থাকে। একটি if স্টেটমেন্ট চেষ্টা করে প্রথম পজিশনে ($1) পাওয়া যেকোনো আর্গুমেন্ট --alpha বা -a-এর সাথে ম্যাচ করতে। (এই আর্বিট্রারি অপশন নাম যেস কোনো স্পেশাল সিগনিফিকেন্স নেই। একটি আসল স্ক্রিপ্টে, আপনি --verbose এবং -v ব্যবহার করতে পারেন ভার্বোস আউটপুট ট্রিগার করার জন্য)।

shift কীওয়ার্ড সকল আর্গুমেন্টকে ১ দিয়ে শিফ্ট করে, যেন পজিশন ২-এ ($2) থাকা আর্গুমেন্ট পজিশন ১-এ ($1) চলে আসে। else স্টেটমেন্টটি ট্রিগার হয় যখন আর কোনো আর্গুমেন্ট প্রসেস করার জন্য থাকে না, যা while লুপ ব্রেক করে।

স্ক্রিপ্টের শেষে, $ALPHA-এর ভ্যালু টার্মিনালে প্রিন্ট হয়।

স্ক্রিপ্ট টেস্ট করুন:

$ bash ./test.sh --alpha
 1
 $ bash ./test.sh

 $ bash ./test.sh -a
 1

অপশনটি সঠিকভাবে ডিটেক্ট হয়েছে।

Bash-এ আর্গুমেন্ট ডিটেক্ট করা

একটা সমস্যা আছে: এক্সট্রা আর্গুমেন্টগুলো উপেক্ষা হয়।

$ bash ./test.sh --alpha foo
 1
 $

অপশন হিসেবে নয় এমন আর্গুমেন্ট ক্যাচ করতে, আপনি বাকি আর্গুমেন্টগুলো একটি Bash অ্যারেতে ডাম্প করতে পারেন।

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
ALPHA=1
shift 1
else
break
fi
done

echo $ALPHA

ARG=( "${@}" )
for i in ${ARG[@]}; do
echo $i
done

স্ক্রিপ্টের নতুন ভার্সন টেস্ট করুন:

$ bash ./test.sh --alpha foo
 1
 foo
 $ bash ./test.sh foo

 foo
 $ bash ./test.sh --alpha foo bar
 1
 foo
 bar

আর্গুমেন্টসহ অপশন

কিছু অপশন তাদের নিজস্ব আর্গুমেন্ট চায়। উদাহরণস্বরূপ, আপনি ইউজারকে একটি অ্যাট্রিবিউট সেট করার অনুমতি দিতে চাইতে পারেন যেমন কালার বা গ্রাফিকের রেজোলিউশন বা আপনার অ্যাপ্লিকেশনকে একটি কাস্টম কনফিগারেশন ফাইলে পয়েন্ট করতে।

Bash-এ এটি ইমপ্লিমেন্ট করতে, আপনি shift কীওয়ার্ড ব্যবহার করতে পারেন বুলিয়ান সুইচের মত কিন্তু আর্গুমেন্টগুলো ২ দিয়ে শিফ্ট করে ১ দিয়ে নয়।

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
ALPHA=1
shift 1
elif [ "$1" = "--config" -o "$1" = "-c" ]; then
CONFIG=$2
shift 2
else
break
fi
done

echo $ALPHA
echo $CONFIG

ARG=( "${@}" )

for i in ${ARG[@]}; do
echo $i
done

এই কোডে, আমি একটি elif ক্লজ যোগ করেছি প্রতিটি আর্গুমেন্ট --config এবং -c-এর সাথে কমপেয়ার করতে। ম্যাচ হলে, CONFIG নামে একটি ভেরিয়েবলের ভ্যালু সেট হয় যেকোনো দ্বিতীয় আর্গুমেন্টের ভ্যালুতে (এটি মানে --config অপশনটির একটি আর্গুমেন্ট দরকার)। সকল আর্গুমেন্ট ২ দিয়ে শিফ্ট হয়: ১ --config বা -c শিফ্ট করার জন্য, এবং ১ তার আর্গুমেন্ট মুভ করার জন্য। স্বাভাবিকভাবে, লুপটি রিপিট হয় যতক্ষণ না ম্যাচিং আর্গুমেন্ট থাকে।

স্ক্রিপ্টের নতুন ভার্সন একটি টেস্ট:

$ bash ./test.sh --config my.conf foo bar
 my.conf
 foo
 bar
 $ bash ./test.sh -a --config my.conf baz
 1
 my.conf
 baz

অপশন পার্সিং সহজ করা

Bash-এ অপশন পার্স করার অন্যান্য পদ্ধতিও আছে। আপনি বদলে case স্টেটমেন্ট বা getopt কমান্ড ব্যবহার করতে পারেন। আপনি যা বেছে নিন, আপনার ইউজারদের জন্য অপশন যেকোনো অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ ফিচার, এবং Bash এটিকে সহজ করে দেয়।

  1. শেল স্ক্রিপ্ট সিনট্যাক্স চেকিং মাস্টার করুন: একটি প্র্যাক্টিক্যাল ডিবাগিং গাইড

  2. Bash-it: স্ক্রিপ্ট, এলিয়াস ও কাস্টম ফাংশন পরিচালনার 궁극ের বাশ ফ্রেমওয়ার্ক

  3. উইন্ডোজ ১০-এ WSL দিয়ে Bash ইনস্টল ও ব্যবহার: ধাপে ধাপে টিউটোরিয়াল

  4. উইন্ডোজ ১০-এ লিনাক্স ব্যাশ শেল ইনস্টল করুন: সম্পূর্ণ ধাপে ধাপে গাইড