আমি রবার্ট ম্যাকমাহনের উত্তরটি এখানে সবচেয়ে ভাল পছন্দ করি কারণ আপনার যে কোনও স্ক্রিপ্ট ব্যবহারের জন্য ফাইলগুলি অন্তর্ভুক্ত করে তোলে sha তবে if [[ -n ${variables[$argument_label]} ]]
"ভেরিয়েবল: খারাপ অ্যারে সাবস্ক্রিপ্ট" বার্তাটি নিক্ষেপ করার সাথে এটির একটি ত্রুটি রয়েছে বলে মনে হচ্ছে । আমি মন্তব্যে প্রতিনিধির নেই, এবং আমার সন্দেহ এই সঠিক হল 'ফিক্স' কিন্তু যে মোড়কে if
মধ্যেif [[ -n $argument_label ]] ; then
সাফ করে এটি আপ।
আমি এখানে কোডটি দিয়ে শেষ করেছি, আপনি যদি আরও ভাল উপায় জানেন তবে দয়া করে রবার্টের উত্তরে একটি মন্তব্য যুক্ত করুন।
ফাইল "flags-declares.sh" অন্তর্ভুক্ত করুন
# declaring a couple of associative arrays
declare -A arguments=();
declare -A variables=();
# declaring an index integer
declare -i index=1;
ফাইল "ফ্ল্যাগস-আরগমেন্টস.এস" অন্তর্ভুক্ত করুন
# $@ here represents all arguments passed in
for i in "$@"
do
arguments[$index]=$i;
prev_index="$(expr $index - 1)";
# this if block does something akin to "where $i contains ="
# "%=*" here strips out everything from the = to the end of the argument leaving only the label
if [[ $i == *"="* ]]
then argument_label=${i%=*}
else argument_label=${arguments[$prev_index]}
fi
if [[ -n $argument_label ]] ; then
# this if block only evaluates to true if the argument label exists in the variables array
if [[ -n ${variables[$argument_label]} ]] ; then
# dynamically creating variables names using declare
# "#$argument_label=" here strips out the label leaving only the value
if [[ $i == *"="* ]]
then declare ${variables[$argument_label]}=${i#$argument_label=}
else declare ${variables[$argument_label]}=${arguments[$index]}
fi
fi
fi
index=index+1;
done;
আপনার "স্ক্রিপ্ট.শ"
. bin/includes/flags-declares.sh
# any variables you want to use here
# on the left left side is argument label or key (entered at the command line along with it's value)
# on the right side is the variable name the value of these arguments should be mapped to.
# (the examples above show how these are being passed into this script)
variables["-gu"]="git_user";
variables["--git-user"]="git_user";
variables["-gb"]="git_branch";
variables["--git-branch"]="git_branch";
variables["-dbr"]="db_fqdn";
variables["--db-redirect"]="db_fqdn";
variables["-e"]="environment";
variables["--environment"]="environment";
. bin/includes/flags-arguments.sh
# then you could simply use the variables like so:
echo "$git_user";
echo "$git_branch";
echo "$db_fqdn";
echo "$environment";